package net.sourceforge.tuned; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; import java.util.prefs.Preferences; import net.sourceforge.filebot.web.MovieDescriptor; import net.sourceforge.tuned.PreferencesMap.SerializableAdapter; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class PreferencesMapTest { private static Preferences root; private static Preferences strings; private static Preferences numbers; private static Preferences temp; private static Preferences sequence; @BeforeClass public static void setUpBeforeClass() throws Exception { root = Preferences.userRoot().node("filebot-test/PreferencesMap"); strings = root.node("strings"); strings.put("1", "Firefly"); strings.put("2", "Roswell"); strings.put("3", "Angel"); strings.put("4", "Dead like me"); strings.put("5", "Babylon"); numbers = root.node("numbers"); numbers.putInt("M", 4); numbers.putInt("A", 5); numbers.putInt("X", 2); sequence = root.node("sequence"); sequence.putInt("1", 1); sequence.putInt("2", 2); sequence.putInt("3", 3); temp = root.node("temp"); } @AfterClass public static void tearDownAfterClass() throws Exception { root.removeNode(); } @Test public void get() { Map stringMap = PreferencesMap.map(strings, String.class); assertEquals("Firefly", stringMap.get("1")); } @Test public void put() { Map stringMap = PreferencesMap.map(temp, String.class); stringMap.put("key", "snake"); assertEquals("snake", temp.get("key", null)); } @Test public void remove() throws Exception { Map map = PreferencesMap.map(numbers, Integer.class); map.remove("A"); assertFalse(Arrays.asList(numbers.keys()).contains("A")); } @Test public void clear() throws Exception { Map map = PreferencesMap.map(temp, Integer.class); map.put("X", 42); map.clear(); assertTrue(temp.keys().length == 0); } @Test public void containsKey() { temp.put("name", "kaya"); Map map = PreferencesMap.map(temp, String.class); assertTrue(map.containsKey("name")); } @Test public void values() { Map map = PreferencesMap.map(sequence, Integer.class); Collection list = map.values(); assertTrue(list.contains(1)); assertTrue(list.contains(2)); assertTrue(list.contains(3)); } @Test public void containsValue() { Map map = PreferencesMap.map(strings, String.class); assertTrue(map.containsValue("Firefly")); } @Test public void entrySet() { Map map = PreferencesMap.map(numbers, Integer.class); for (Entry entry : map.entrySet()) { Integer v = entry.getValue(); entry.setValue(v + 1); } assertEquals(5, numbers.getInt("M", -1)); } @Test(expected = NumberFormatException.class) public void adapterException() { PreferencesMap.map(strings, Integer.class).values(); } @Test public void containsKeyWithObjectKey() throws Exception { Map map = PreferencesMap.map(strings, String.class); assertFalse(map.containsKey(new Object())); } @Test(expected = IllegalArgumentException.class) public void getWithObjectKey() throws Exception { Map map = PreferencesMap.map(strings, String.class); map.get(new Object()); } @Test public void serializableAdapter() { Map map = PreferencesMap.map(temp, new SerializableAdapter()); MovieDescriptor movie = new MovieDescriptor("The Hitchhiker's Guide to the Galaxy", 42); map.put("movie", movie); MovieDescriptor retrieved = map.get("movie"); assertEquals(movie.getImdbId(), retrieved.getImdbId()); } }