### Question:
Tags { static void validateString(final String what, final String s) { if (s == null) { throw new IllegalArgumentException("Invalid " + what + ": null"); } final int n = s.length(); for (int i = 0; i < n; i++) { final char c = s.charAt(i); if (!(('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') || c == '-' || c == '_' || c == '.' || c == '/')) { throw new IllegalArgumentException("Invalid " + what + " (\"" + s + "\"): illegal character: " + c); } } } private  Tags(); static String[] splitString(final String s, final char c); static void parse(final HashMap<String, String> tags,
                             final String tag); static String parseWithMetric(final String metric,
                                         final HashMap<String, String> tags); static long parseLong(final CharSequence s); static boolean looksLikeInteger(final String value);  }### Answer:
@Test public void validateGoodString() { Tags.validateString("test", "omg-TSDB/42._foo_"); }
@Test(expected=IllegalArgumentException.class) public void validateNullString() { Tags.validateString("test", null); }
@Test(expected=IllegalArgumentException.class) public void validateBadString() { Tags.validateString("test", "this is a test!"); }