From 6d9c924ec47787bfdb16f37b8f0f795ebfd2af83 Mon Sep 17 00:00:00 2001 From: curious_odd_man Date: Sun, 29 Aug 2021 21:43:49 +0300 Subject: [PATCH] #63. Negative Lookahead Error Fixing some tests. --- .../rgxgen/data/TestPattern.java | 25 ++++++++++++++++--- .../rgxgen/testutil/TestingUtilities.java | 12 +++------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/test/java/com/github/curiousoddman/rgxgen/data/TestPattern.java b/src/test/java/com/github/curiousoddman/rgxgen/data/TestPattern.java index 633e33de..7845d861 100644 --- a/src/test/java/com/github/curiousoddman/rgxgen/data/TestPattern.java +++ b/src/test/java/com/github/curiousoddman/rgxgen/data/TestPattern.java @@ -224,10 +224,19 @@ public enum TestPattern implements DataInterface { setUseFindForMatching(); }}, //----------------------------------------------------------------------------------------------------------------------------------------- + // FIXME: Special case + POSITIVE_LOOKAHEAD_HAS_SPECIFIC_SYMBOLS("(?=.*[XCV]).*", + new Sequence("foo(?=bar)", + new FinalSymbol("foo"), new FinalSymbol("bar")) + ) {{ + setUseFindForMatching(); + }}, + //----------------------------------------------------------------------------------------------------------------------------------------- POSITIVE_LOOKAHEAD_BEFORE("(?=bar).*", new Sequence("(?=bar).*", new FinalSymbol("bar"), Repeat.minimum(".*", new SymbolSet(), 0))) {{ setUseFindForMatching(); }}, + //----------------------------------------------------------------------------------------------------------------------------------------- POSITIVE_LOOKAHEAD_BEFORE_NOT_INFINITE("(?=bar).*car", new Sequence("(?=bar).*car", new FinalSymbol("bar"), @@ -236,6 +245,7 @@ public enum TestPattern implements DataInterface { setUseFindForMatching(); }}, //----------------------------------------------------------------------------------------------------------------------------------------- + // FIXME: Special case NEGATIVE_LOOKAHEAD_AFTER("foo(?!bar)", new Sequence("foo(?!bar)", new FinalSymbol("foo"), new NotSymbol("bar", new FinalSymbol("bar")))) {{ @@ -250,6 +260,13 @@ public enum TestPattern implements DataInterface { setValidated(); }}, //----------------------------------------------------------------------------------------------------------------------------------------- + // FIXME: Handle as special case + NEGATIVE_LOOKAHEAD_NOT_IN("(?!.*(AB|AC)).*", + new SymbolSet("[AB]", new Character[]{'A', 'B'}, SymbolSet.TYPE.POSITIVE)) {{ + setUseFindForMatching(); + setValidated(); + }}, + //----------------------------------------------------------------------------------------------------------------------------------------- NEGATIVE_LOOKAHEAD_BEFORE_SPANS_TWO_NODES("(?!BB)[AB][AB]", new Sequence( "(?!BB)[AB][AB]", @@ -271,14 +288,14 @@ public enum TestPattern implements DataInterface { setUseFindForMatching(); }}, //----------------------------------------------------------------------------------------------------------------------------------------- - POSITIVE_LOOKBEHIND_BEFORE("(? List iteratorToList(Iterator it) { - List lst = new ArrayList<>(100); - - while (it.hasNext()) { - T next = it.next(); - lst.add(next); - } - - return lst; + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(it, 0), false) + .collect(Collectors.toList()); } public static Character[] getAllDigits() {