package ch.unibe.scg.cc.regex; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; import java.util.regex.MatchResult; 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 ReplacementStringTest { @Test public void testSimpleConstruction() { ReplacementString s = new ReplacementString("waa$2blaa$1"); List<Segment> contents = s.contents; assertEquals(LiteralSegment.class, contents.get(0).getClass()); assertEquals(PlaceHolderSegment.class, contents.get(1).getClass()); assertEquals(LiteralSegment.class, contents.get(2).getClass()); assertEquals(PlaceHolderSegment.class, contents.get(3).getClass()); assertThat(((LiteralSegment) contents.get(0)).s, is("waa")); assertThat(((PlaceHolderSegment) contents.get(1)).placeHolderNumber, is(2)); assertThat(((LiteralSegment) contents.get(2)).s, is("blaa")); assertThat(((PlaceHolderSegment) contents.get(3)).placeHolderNumber, is(1)); } @Test public void testConstruction() { ReplacementString s = new ReplacementString("$2$1"); List<Segment> contents = s.contents; assertEquals(PlaceHolderSegment.class, contents.get(0).getClass()); assertEquals(PlaceHolderSegment.class, contents.get(1).getClass()); assertThat(((PlaceHolderSegment) contents.get(0)).placeHolderNumber, is(2)); assertThat(((PlaceHolderSegment) contents.get(1)).placeHolderNumber, is(1)); MatchResult matchResult = mock(MatchResult.class); when(matchResult.group(1)).thenReturn("a"); when(matchResult.group(2)).thenReturn("b"); assertThat(s.fillIn(matchResult), is("ba")); } }