@Test public void testGroupInfoMapHasCorrectPosAndGroupIndex() { final String PATT = "(foo)(?<X>a)(?<Y>b)(bar)(?<Z>c)(?<Z>d)"; // two groups named "Z" Pattern p = Pattern.compile(PATT); Map<String, List<GroupInfo>> map = p.groupInfo(); assertNotNull(map); GroupInfo[] inf = (GroupInfo[]) map.get("X").toArray(new GroupInfo[0]); assertEquals(1, inf.length); assertEquals(PATT.indexOf("(?<X>"), inf[0].pos()); assertEquals(1, inf[0].groupIndex()); GroupInfo[] inf2 = (GroupInfo[]) map.get("Y").toArray(new GroupInfo[0]); assertEquals(1, inf2.length); assertEquals(PATT.indexOf("(?<Y>"), inf2[0].pos()); assertEquals(2, inf2[0].groupIndex()); // test both Z groups GroupInfo[] inf3 = (GroupInfo[]) map.get("Z").toArray(new GroupInfo[0]); assertEquals(2, inf3.length); int posZ = PATT.indexOf("(?<Z>"); assertEquals(posZ, inf3[0].pos()); assertEquals(4, inf3[0].groupIndex()); assertEquals(PATT.indexOf("(?<Z>", posZ + 1), inf3[1].pos()); assertEquals(5, inf3[1].groupIndex()); }
@Test public void testGroupInfoMapHasNamesAsKeys() { final String PATT = "(foo)(?<X>a)(?<Y>b)(bar)(?<Z>c)(?<Z>d)"; // two groups named "Z" Pattern p = Pattern.compile(PATT); Map<String, List<GroupInfo>> map = p.groupInfo(); assertNotNull(map); assertEquals(3, map.size()); assertTrue(map.containsKey("X")); assertTrue(map.containsKey("Y")); assertTrue(map.containsKey("Z")); }