/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package com.stevesoft.pat; import static org.testng.AssertJUnit.assertEquals; import java.io.IOException; import java.io.StringWriter; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Test class refactored from RegexWriter main method */ public class RegexWriterTest { /** * Asserts that the result of performing 'replaceAll' on the input using the * regular expression is the same as the output of a RegexWriter, constructed * from the regular expression, writing out each character of the input * string. * * @param re * a regular expression * @param inp * an input string * @throws Exception */ @Test(groups = { "Functional" }, dataProvider = "testWriteParam") void test(String re, String inp) throws IOException { 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("re=" + re); System.out.println("inp=" + inp); System.out.println("res1=" + res1); System.out.println("res2=" + res2); assertEquals(res1, res2); } } // @Test(groups ={ "Functional" }) // public void testWrite() throws IOException // { // for (int n = 1; n <= 1; n++) // { // test("s/x/y/", "-----x123456789"); // test("s/x/y/", "x123456789"); // test("s/x/y/", "-----x"); // test("s/x.*?x/y/", ".xx..x..x...x...x....x....x"); // test("s/x.*x/[$&]/", "--x........x--xx"); // test("s/x.*x/[$&]/", "--x........x------"); // test("s/.$/a/m", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbbbbbbbbbbbb"); // test("s/.$/a/", "123"); // test("s/.$/a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb"); // test("s/^./a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb"); // test("s/$/a/", "bbb"); // test("s/^/a/", "bbb"); // test("s/^/a/", ""); // test("s{.*}{N}", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // test("s/.{0,7}/y/", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); // test("s/x/$&/", "xxx"); // } // } @DataProvider(name = "testWriteParam") public Object[][] regexTestParams() { return new Object[][] { { "s/x/y/", "-----x123456789" }, { "s/x/y/", "x123456789" }, { "s/x/y/", "-----x" }, { "s/x.*?x/y/", ".xx..x..x...x...x....x....x" }, { "s/x.*x/[$&]/", "--x........x--xx" }, { "s/x.*x/[$&]/", "--x........x------" }, { "s/.$/a/m", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbbbbbbbbbbbb" }, { "s/.$/a/", "123" }, { "s/.$/a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb" }, { "s/^./a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb" }, { "s/$/a/", "bbb" }, { "s/^/a/", "bbb" }, { "s/^/a/", "" }, { "s{.*}{N}", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, { "s/.{0,7}/y/", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }, { "s/x/$&/", "xxx" } }; } }