@Test public void readWriteProgramGoodTest() { final byte[] exp = aProgram; final ProgramHandle hProg = ProgramHandle.read(exp, 0, exp.length); try { final int size = hProg.size(); assertEquals(exp.length, size); final byte[] buf = new byte[size]; hProg.write(buf, 0); assertArrayEquals(exp, buf); } finally { hProg.destroy(); } }
@Test public void writeProgramGoodTest() throws Exception { final ParserHandle hParser = new ParserHandle(4); try { final KeyOptions kopts = new KeyOptions(); kopts.FixedString = false; kopts.CaseInsensitive = false; hParser.addKeyword("meh", 0, kopts, "ASCII"); final ProgramOptions popts = new ProgramOptions(); popts.Determinize = true; final ProgramHandle hProg = hParser.createProgram(popts); try { final byte[] exp = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6D, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x65, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 }; final int size = hProg.size(); assertEquals(exp.length, size); final byte[] buf = new byte[size]; hProg.write(buf, 0); assertArrayEquals(exp, buf); } finally { hProg.destroy(); } } finally { hParser.destroy(); } }
@Test(expected = IllegalStateException.class) public void noSizeAfterDestroyProgramTest() throws Exception { final ParserHandle hParser = new ParserHandle(4); try { final KeyOptions kopts = new KeyOptions(); kopts.FixedString = false; kopts.CaseInsensitive = false; hParser.addKeyword("meh", 0, kopts, "ASCII"); final ProgramOptions popts = new ProgramOptions(); popts.Determinize = true; final ProgramHandle hProg = hParser.createProgram(popts); hProg.destroy(); hProg.size(); } finally { hParser.destroy(); } }
@Test(expected = IndexOutOfBoundsException.class) public void writeProgramOffsetTooLargeTest() throws Exception { final ParserHandle hParser = new ParserHandle(4); try { final KeyOptions kopts = new KeyOptions(); kopts.FixedString = false; kopts.CaseInsensitive = false; hParser.addKeyword("meh", 0, kopts, "ASCII"); final ProgramOptions popts = new ProgramOptions(); popts.Determinize = true; final ProgramHandle hProg = hParser.createProgram(popts); try { final byte[] buf = new byte[hProg.size()]; hProg.write(buf, 1); } finally { hProg.destroy(); } } finally { hParser.destroy(); } }