package org.identityconnectors.oracle; import static org.testng.AssertJUnit.assertEquals; import java.util.HashMap; import java.util.Map; import org.identityconnectors.common.CollectionUtil; import org.identityconnectors.test.common.TestHelpers; import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.Test; /** * Tests for {@link MapParser} * * @author kitko */ public class MapParserTest { /** * Successful parsing */ @SuppressWarnings("unchecked") @Test public void testParseOk() { Map<String, Object> map = parseMap("a=b,c=d"); Assert.assertEquals(CollectionUtil.newMap(new String[] { "a", "c" }, new String[] { "b", "d" }), map); map = parseMap("{a=b,c=d}"); Assert.assertEquals(CollectionUtil.newMap(new String[] { "a", "c" }, new String[] { "b", "d" }), map); map = parseMap("{name=Tom,surname=Scott,address={town=London,street=Some street,number={n1=10,n2=1234}}}"); assertEquals("Tom", map.get("name")); assertEquals("Scott", map.get("surname")); final Map testMap = CollectionUtil.newMap("town", "London", "street", "Some street"); testMap.put("number", CollectionUtil.newMap("n1", "10", "n2", "1234")); assertEquals(testMap, map.get("address")); map = parseMap("a=,c=d"); Assert.assertEquals(CollectionUtil.newMap("a", null, "c", "d"), map); map = parseMap(""); Assert.assertEquals(new HashMap(), map); map = parseMap(null); Assert.assertEquals(new HashMap(), map); map = parseMap("quates="); System.out.println(map); } /** Test fail of parsing */ @Test public void testParseFail() { // Wish java had closures testFail(new Runnable() { public void run() { parseMap("{"); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap("}"); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap("a=b}"); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap("a=b,"); } }, "Must fail for invalid entry"); testFail(new Runnable() { public void run() { parseMap("a=b,="); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap("a=b,=d"); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap(","); } }, "Must fail for invalid comma"); testFail(new Runnable() { public void run() { parseMap(",,"); } }, "Must fail for invalid comma"); testFail(new Runnable() { public void run() { parseMap("a=b,c={d"); } }, "Must fail for invalid bracket"); testFail(new Runnable() { public void run() { parseMap("a={b,c=d}"); } }, "Must fail for invalid bracket"); } @Test(enabled = false) private void testFail(Runnable runnable, String msg) { try { runnable.run(); AssertJUnit.fail(msg); } catch (RuntimeException e) { } } private Map<String, Object> parseMap(String string) { return MapParser.parseMap(string, TestHelpers.createDummyMessages()); } }