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