package org.jhove2.util;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.Before;
import org.junit.Test;
public class CopyUtilsTest {
protected ArrayList<String> beforeList;
protected String FIRST = "first";
protected String SECOND = "second";
protected String THIRD = "third";
protected Map<String, Integer> beforeMap;
protected Map<String, String> beforeStringMap;
protected SortedSet<String> beforeSet;
protected String FOURTH = "fourth";
protected String FIFTH = "fifth";
protected String SIXTH = "sixth";
protected ArrayList<String> beforeList2;
Map<String, List<String>> beforeMapList;
@Before
public void setUp() throws Exception {
beforeList = new ArrayList<String>();
beforeList.add(FIRST);
beforeList.add(SECOND);
beforeList.add(THIRD);
beforeMap = new HashMap<String, Integer>();
beforeMap.put(FIRST, new Integer(1));
beforeMap.put(SECOND, new Integer(2));
beforeMap.put(THIRD, new Integer(3));
beforeStringMap = new HashMap<String, String>();
beforeStringMap.put(FIRST, SECOND);
beforeStringMap.put(SECOND, THIRD);
beforeStringMap.put(THIRD, FIRST);
beforeSet = new TreeSet<String>();
beforeSet.add(FIRST);
beforeSet.add(SECOND);
beforeSet.add(THIRD);
beforeList2 = new ArrayList<String>();
beforeList2.add(FOURTH);
beforeList2.add(FIFTH);
beforeList2.add(SIXTH);
beforeMapList = new HashMap<String, List<String>>();
beforeMapList.put(FIRST, beforeList);
beforeMapList.put(SECOND, beforeList2);
}
@Test
public void testCopyAndClearList() {
List<String> afterList = null;
afterList = CopyUtils.copyAndClearList(beforeList);
assertEquals(3,afterList.size());
assertEquals(0, beforeList.size());
assertTrue(afterList.contains(FIRST));
assertTrue(afterList.contains(SECOND));
assertTrue(afterList.contains(THIRD));
}
@Test
public void testCopyAndClearIntMap() {
Map<String, Integer> afterMap = CopyUtils.copyAndClearIntMap(beforeMap);
assertEquals(3, afterMap.keySet().size());
assertTrue(afterMap.containsKey(FIRST));
assertTrue(afterMap.containsKey(SECOND));
assertTrue(afterMap.containsKey(THIRD));
assertEquals(new Integer(1), afterMap.get(FIRST));
assertFalse(beforeMap.containsKey(FIRST));
assertFalse(beforeMap.containsKey(SECOND));
assertFalse(beforeMap.containsKey(THIRD));
assertEquals(0, beforeMap.keySet().size());
}
@Test
public void testCopyAndClearStringMap() {
Map<String, String> afterMap = CopyUtils.copyAndClearStringMap(beforeStringMap);
assertEquals(3, afterMap.keySet().size());
assertTrue(afterMap.containsKey(FIRST));
assertTrue(afterMap.containsKey(SECOND));
assertTrue(afterMap.containsKey(THIRD));
assertEquals(SECOND, afterMap.get(FIRST));
assertFalse(beforeStringMap.containsKey(FIRST));
assertFalse(beforeStringMap.containsKey(SECOND));
assertFalse(beforeStringMap.containsKey(THIRD));
assertEquals(0, beforeStringMap.keySet().size());
}
@Test
public void testCopyAndClearListMap() {
Map<String, List<String>> afterMapList = CopyUtils.copyAndClearListMap(beforeMapList);
assertEquals(2, afterMapList.keySet().size());
assertTrue(afterMapList.containsKey(FIRST));
assertTrue(afterMapList.containsKey(SECOND));
List<String> afterList1 = afterMapList.get(FIRST);
assertEquals(3, afterList1.size());
assertTrue(afterList1.contains(FIRST));
assertTrue(afterList1.contains(SECOND));
assertTrue(afterList1.contains(THIRD));
List<String> afterList2 = afterMapList.get(SECOND);
assertEquals(3, afterList2.size());
assertTrue(afterList2.contains(FOURTH));
assertTrue(afterList2.contains(FIFTH));
assertTrue(afterList2.contains(SIXTH));
assertEquals(0, beforeMapList.keySet().size());
}
@Test
public void testCopyAndClearSet() {
SortedSet<String> afterSet = CopyUtils.copyAndClearSet(beforeSet);
assertEquals(3, afterSet.size());
assertTrue(afterSet.contains(FIRST));
assertTrue(afterSet.contains(SECOND));
assertTrue(afterSet.contains(THIRD));
assertEquals(0, beforeSet.size());
}
}