### Question:
RegexMatcher implements Matcher<String> { @Override public boolean matching(String target) { return null != target && null != pattern && target.matches(pattern); } RegexMatcher(String pattern); @Override boolean matching(String target);  }### Answer:
@Test public void testMatchingWithNullInputs(){ Assert.assertFalse(new RegexMatcher(null).matching(null)); Assert.assertFalse(new RegexMatcher(null).matching("foobar")); Assert.assertFalse(new RegexMatcher("foobar").matching(null)); Assert.assertTrue(new RegexMatcher("foobar").matching("foobar")); }
@Test public void testMatchingWithRegularGrammar(){ Assert.assertTrue(new RegexMatcher("foo?").matching("fo")); Assert.assertTrue(new RegexMatcher("foo?").matching("foo")); Assert.assertTrue(new RegexMatcher("foo.").matching("fooo")); Assert.assertTrue(new RegexMatcher("foo*").matching("fooooo")); Assert.assertTrue(new RegexMatcher("foo.*").matching("foobarbarbar")); Assert.assertFalse(new RegexMatcher("foo+").matching("fo")); Assert.assertTrue(new RegexMatcher("foo+").matching("fooooo")); Assert.assertTrue(new RegexMatcher("foo\\s").matching("foo ")); Assert.assertFalse(new RegexMatcher("foo\\S").matching("foo ")); Assert.assertTrue(new RegexMatcher("foo\\w").matching("fooo")); Assert.assertTrue(new RegexMatcher("foo\\W").matching("foo ")); Assert.assertFalse(new RegexMatcher("foo\\W").matching("fooo")); Assert.assertTrue(new RegexMatcher("foo[1234]").matching("foo1")); Assert.assertFalse(new RegexMatcher("foo[1234]").matching("foo5")); Assert.assertTrue(new RegexMatcher("foo\\\\").matching("foo\\")); Assert.assertTrue(new RegexMatcher("foo\\d").matching("foo5")); Assert.assertTrue(new RegexMatcher("fo{1,3}").matching("fo")); Assert.assertFalse(new RegexMatcher("fo{1,3}").matching("foooo")); }
@Test public void testMatchingComplexRegex(){ String ipAddressPattern = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"; Assert.assertTrue(new RegexMatcher(ipAddressPattern).matching("1.1.1.1")); Assert.assertFalse(new RegexMatcher(ipAddressPattern).matching("255.256.255.0")); Assert.assertFalse(new RegexMatcher(ipAddressPattern).matching("1.1.1")); Assert.assertTrue(new RegexMatcher("^foobar$").matching("foobar")); Assert.assertFalse(new RegexMatcher("^foobar$").matching("\nfoobar")); Assert.assertFalse(new RegexMatcher("^foobar$").matching("foobar\n")); String emailAddressPattern = "[a-z\\d]+(\\.[a-z\\d]+)*@([\\da-z](-[\\da-z])?)+(\\.{1,2}[a-z]+)+"; Assert.assertTrue(new RegexMatcher(emailAddressPattern).matching("foo@bar.com")); Assert.assertFalse(new RegexMatcher(emailAddressPattern).matching("asdfghjkl")); }