### Question:
Main { public static String obfuscate(String s) { StringBuilder buf = new StringBuilder(); byte[] b = s.getBytes(); buf.append(__OBFUSCATE); for (int i = 0; i < b.length; i++) { byte b1 = b[i]; byte b2 = b[s.length() - (i + 1)]; int i1 = 127 + b1 + b2; int i2 = 127 + b1 - b2; int i0 = i1 * 256 + i2; String x = Integer.toString(i0, 36); switch (x.length()) { case 1: buf.append('0'); case 2: buf.append('0'); case 3: buf.append('0'); default: buf.append(x); } } return buf.toString(); }  static void main(String[] arg); static String obfuscate(String s); static String deobfuscate(String s); static String encrypt(String s); static String decrypt(String s); static char[] unfold(String s); static final String __OBFUSCATE; static final String __CRYPT; static final String __CONSOLE; }### Answer:
@Test public void testObfuscate() throws Exception { String expected = "So Long, and Thanks for All the Fish"; String actual = Main.obfuscate(expected); Assert.assertEquals(Main.deobfuscate(actual), expected); }