### Question:
StartsWithMatcher extends AbstractMatcher { @Override public boolean isSatisfiedBy(String currentValue) { return CalculateService.startsWith(getPattern(), getValue(), currentValue); } StartsWithMatcher(String value);  StartsWithMatcher(Pattern value); @Override MatcherType getMatcherType(); @Override boolean isSatisfiedBy(String currentValue);  }### Answer:
@Test public void shouldStartWithString() { StartsWithMatcher matcher = new StartsWithMatcher("some va"); assertThat(matcher.isSatisfiedBy("some value")).isTrue(); }
@Test public void shouldNotStartWithString() { StartsWithMatcher matcher = new StartsWithMatcher("some value"); assertThat(matcher.isSatisfiedBy("val")).isFalse(); }
@Test public void shouldStartWithPattern() { StartsWithMatcher matcher = new StartsWithMatcher(Pattern.compile("^some val")); assertThat(matcher.isSatisfiedBy("some value")).isTrue(); }
@Test public void shouldNotStartWithPattern() { StartsWithMatcher matcher = new StartsWithMatcher(Pattern.compile("value.*")); assertThat(matcher.isSatisfiedBy("non-matching")).isFalse(); }