package ch.unibe.scg.cc.regex; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import java.util.List; import java.util.regex.Pattern; import org.junit.Test; import ch.unibe.scg.cc.regex.ReplacementString.LiteralSegment; import ch.unibe.scg.cc.regex.ReplacementString.PlaceHolderSegment; import ch.unibe.scg.cc.regex.ReplacementString.Segment; @SuppressWarnings("javadoc") public final class ReplaceTest { @Test public void testMakeReplace() { Replace r = new Replace(Pattern.compile("x"), "y"); assertThat(r.replacementString.contents.size(), is(1)); StringBuilder sb = new StringBuilder("123x123"); r.replaceAll(sb); assertThat(sb.toString(), is("123y123")); } @Test public void makePatternReplace() { Replace r = new Replace(Pattern.compile("x"), "<$0>"); List<Segment> contents = r.replacementString.contents; assertThat(contents.size(), is(3)); assertEquals(LiteralSegment.class, contents.get(0).getClass()); assertEquals(PlaceHolderSegment.class, contents.get(1).getClass()); assertEquals(LiteralSegment.class, contents.get(2).getClass()); assertThat(((LiteralSegment) contents.get(2)).s, is(">")); StringBuilder sb = new StringBuilder("xxyxx"); r.replaceAll(sb); assertThat(sb.toString(), is("<x><x>y<x><x>")); } @Test public void simpleSelfReplace() { Replace r = new Replace(Pattern.compile("(x)"), "$0"); String selfReplaced = r.allReplaced("xxx"); assertThat(selfReplaced, is("xxx")); } @Test public void reverseThings() { Replace r = new Replace(Pattern.compile("(\\d*)(bla)"), "$2$1"); List<Segment> contents = r.replacementString.contents; assertThat(contents.size(), is(2)); String reversed = r.allReplaced("123bla"); assertThat(reversed, is("bla123")); } }