package org.pitest.bytecode; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.objectweb.asm.ClassWriter; public class FrameOptionsTest { @Test public void shouldComputeFramesForJava7() { assertEquals(ClassWriter.COMPUTE_FRAMES, bytesToTestee("CAFEBABE00000033")); } @Test public void shouldComputeFramesForJava8() { assertEquals(ClassWriter.COMPUTE_FRAMES, bytesToTestee("CAFEBABE00000034")); } @Test public void shouldNotComputeFramesForJava6() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE00000032")); } @Test public void shouldNotComputeFramesForJava5() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE00000031")); } @Test public void shouldNotComputeFramesForJava4() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE00000030")); } @Test public void shouldNotComputeFramesForJava3() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE0000002F")); } @Test public void shouldNotComputeFramesForJava2() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE0000002E")); } @Test public void shouldNotComputeFramesForJava1() { assertEquals(ClassWriter.COMPUTE_MAXS, bytesToTestee("CAFEBABE0000002D")); } private int bytesToTestee(String hex) { return FrameOptions.pickFlags(toByteArray(hex)); } private static byte[] toByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character .digit(s.charAt(i + 1), 16)); } return data; } }