X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FRegexWriter.java;h=a6fec749272f5e6fab1ed2452aca9c07f479f027;hb=c84d2601499c7d332cfd208f589686af8e3b1a20;hp=61bcdf618e7e1f3eb3852b83479106ead3f985e1;hpb=d07fe6a0891b57a9d707e356f7769395ce94b0da;p=jalview.git diff --git a/src/com/stevesoft/pat/RegexWriter.java b/src/com/stevesoft/pat/RegexWriter.java index 61bcdf6..a6fec74 100755 --- a/src/com/stevesoft/pat/RegexWriter.java +++ b/src/com/stevesoft/pat/RegexWriter.java @@ -8,6 +8,7 @@ package com.stevesoft.pat; import java.io.IOException; +import java.io.StringWriter; import java.io.Writer; import com.stevesoft.pat.wrap.WriterWrap; @@ -32,8 +33,8 @@ import com.stevesoft.pat.wrap.WriterWrap; * an ending (the whole pattern is a String formed by adding the beginning and * ending), and a ReplaceRule. *

- * An illustration of this is given in the this example. + * An illustration of this is given in the this + * example. */ public class RegexWriter extends Writer { @@ -231,4 +232,51 @@ public class RegexWriter extends Writer { bufferSize = i; } + + static void test(String re, String inp, int n) throws Exception + { + StringWriter sw = new StringWriter(); + Regex rex = Regex.perlCode(re); + String res1 = rex.replaceAll(inp); + RegexWriter rw = new RegexWriter(rex, sw); + for (int i = 0; i < inp.length(); i++) + { + rw.write(inp.charAt(i)); + } + rw.close(); + String res2 = sw.toString(); + if (!res1.equals(res2)) + { + System.out.println("nmax=" + n); + System.out.println("re=" + re); + System.out.println("inp=" + inp); + System.out.println("res1=" + res1); + System.out.println("res2=" + res2); + System.exit(255); + } + } + + public static void main(String[] args) throws Exception + { + for (int n = 1; n <= 1; n++) + { + test("s/x/y/", "-----x123456789", n); + test("s/x/y/", "x123456789", n); + test("s/x/y/", "-----x", n); + test("s/x.*?x/y/", ".xx..x..x...x...x....x....x", n); + test("s/x.*x/[$&]/", "--x........x--xx", n); + test("s/x.*x/[$&]/", "--x........x------", n); + test("s/.$/a/m", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbbbbbbbbbbbb", n); + test("s/.$/a/", "123", n); + test("s/.$/a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb", n); + test("s/^./a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb", n); + test("s/$/a/", "bbb", n); + test("s/^/a/", "bbb", n); + test("s/^/a/", "", n); + test("s{.*}{N}", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", n); + test("s/.{0,7}/y/", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", n); + test("s/x/$&/", "xxx", n); + } + System.out.println("Success!!!"); + } }