package ex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class LSC_Sample { public static final String CONSTANT_VAL_STRING = "GoodBye"; private static final String CONSTANT_VAL_STRING2 = "GoodBye2"; enum Planets { EARTH, MARS, VENUS, JUPITER; } public boolean test1(String s) { // tag return s.equals("Hello"); } public boolean test2(String s) { // no tag return "Hello".equals(s); } public boolean test3(String s1, String s2) { // no tag return s1.equals(s2); } public int test4(String s) { // tag return s.compareTo("Hello"); } public int test5(String s) { // no tag return "Hello".compareTo(s); } public int test6(String s) { // tag return s.compareTo(CONSTANT_VAL_STRING); } public int test7(String s) { // no tag return CONSTANT_VAL_STRING.compareTo(s); } public int test8(String s) { // tag return s.compareTo(CONSTANT_VAL_STRING2); } public int test9(String s) { // no tag return CONSTANT_VAL_STRING2.compareTo(s); } public static int test10(String s) { switch (s) { case "Hello": return 1; case CONSTANT_VAL_STRING: return 2; } switch (s) { // two in a row to check the correct switch offsets case "Hello2": return 1; case CONSTANT_VAL_STRING + "2": return 2; default: return 3; } } public static int test11(String s, String s2) { // no tag switch (s) { case "Switch1": return 1; case "switch2": return 2; case "switch3": // tag if (s2.equalsIgnoreCase("Foo6")) { return 5; } } // tag if (s.equals("Foo7")) { return 3; } System.out.println(s); return 4; } public static int test12(int n, String s2) { switch (n) { // this is probably a table lookup case 1: return 1; case 2: return 2; case 3: case 4: // tag if (s2.equalsIgnoreCase("Foo6")) { return 5; } } // tag if (s2.equals("Foo7")) { return 3; } System.out.println(s2); return 4; } public static int test13(Planets p, String s2) { switch (p) { case EARTH: return 1; case MARS: return 2; case JUPITER: // tag if (s2.equalsIgnoreCase("Foo6")) { return 5; } default: break; } // tag if (s2.equals("Foo7")) { return 3; } System.out.println(s2); return 4; } /* * Tried really hard to get a false negative, by manipulating this switch to * look like a string switch. Couldn't make it happen. */ public static int test14(String s2) { switch (s2.hashCode()) { case 1: return 1; case 2: return 2; case 3: case 99: // forces this to also be a lookup table, like the strings // tag if (s2.equalsIgnoreCase("Foo6")) { return 5; } } // tag if (s2.equals("Foo7")) { return 3; } System.out.println(s2); return 4; } public String fpStringBufferForMatcher(String input) { Pattern p = Pattern.compile("12.*myshoe"); Matcher matcher = p.matcher(input); StringBuffer stringBuffer = new StringBuffer(); while (matcher.find()) { String prefix = matcher.group(1); matcher.appendReplacement(stringBuffer, "shobeydobee" + prefix); } matcher.appendTail(stringBuffer); return stringBuffer.toString(); } }