001/*
002 * Copyright 2005,2009 Ivan SZKIBA
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.ini4j;
017
018import static org.junit.Assert.assertEquals;
019import static org.junit.Assert.assertNull;
020import static org.junit.Assert.assertTrue;
021
022import org.junit.Test;
023
024import java.util.HashMap;
025import java.util.Map;
026
027public class CommonMultiMapTest extends Ini4jCase
028{
029    private static final String KEY = "key";
030    private static final String VALUE = "value";
031    private static final String COMMENT = "comment";
032
033    @Test public void testClearAndRemove() throws Exception
034    {
035        CommonMultiMap<String, String> map = new CommonMultiMap<String, String>();
036
037        assertNull(map.removeComment(KEY));
038
039        //
040        map.put(KEY, VALUE);
041        map.clear();
042        assertTrue(map.isEmpty());
043
044        //
045        map.put(KEY, VALUE);
046        map.remove(KEY);
047        assertNull(map.getComment(KEY));
048
049        //
050        map.put(KEY, VALUE);
051        map.remove(KEY, 0);
052        assertNull(map.getComment(KEY));
053
054        //
055        map.add(KEY, VALUE);
056        map.add(KEY, VALUE);
057        map.putComment(KEY, COMMENT);
058        map.remove(KEY, 0);
059        assertEquals(COMMENT, map.getComment(KEY));
060
061        //
062        map.put(KEY, VALUE);
063        map.putComment(KEY, COMMENT);
064        assertEquals(COMMENT, map.getComment(KEY));
065        map.clear();
066        assertNull(map.getComment(KEY));
067
068        //
069        map.put(KEY, VALUE);
070        map.putComment(KEY, COMMENT);
071        map.remove(KEY);
072        assertNull(map.getComment(KEY));
073
074        //
075        map.put(KEY, VALUE);
076        map.putComment(KEY, COMMENT);
077        assertEquals(COMMENT, map.removeComment(KEY));
078        assertNull(map.getComment(KEY));
079
080        //
081        map.put(KEY, VALUE);
082        map.putComment(KEY, COMMENT);
083        map.remove(KEY, 0);
084        assertNull(map.getComment(KEY));
085    }
086
087    @Test public void testPutAll() throws Exception
088    {
089        CommonMultiMap<String, String> map = new CommonMultiMap<String, String>();
090        CommonMultiMap<String, String> copy = new CommonMultiMap<String, String>();
091
092        map.put(KEY, VALUE);
093        map.putComment(KEY, COMMENT);
094        copy.putAll(map);
095        assertEquals(COMMENT, copy.getComment(KEY));
096        Map<String, String> simple = new HashMap<String, String>();
097
098        simple.put(KEY, VALUE);
099        copy.clear();
100        assertTrue(copy.isEmpty());
101        copy.putAll(simple);
102        assertNull(copy.getComment(KEY));
103        assertEquals(VALUE, copy.get(KEY));
104
105        //
106        map = new CommonMultiMap<String, String>();
107        map.put(KEY, VALUE);
108        copy.clear();
109        copy.putAll(map);
110        assertEquals(VALUE, copy.get(KEY));
111        assertNull(copy.getComment(KEY));
112    }
113}