@Test public void reserveRootPrecludesAllElse() throws Exception { Gadget gadget = gadget(); // Visitor1 reserves root, visitor2 never gets anything. DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); expect(visitor1.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_TREE).once(); List<Node> allReserved = Lists.newArrayList(root); expect(visitor1.revisit(gadget, allReserved)) .andReturn(true).once(); DomWalker.Visitor visitor2 = createMock(DomWalker.Visitor.class); replay(visitor1, visitor2); MutableContent mc = getContent(1); // Mutated once by revisit. DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void reserveRootPrecludesAllElse() throws Exception { Gadget gadget = gadget(); // Visitor1 reserves root, visitor2 never gets anything. DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); expect(visitor1.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_TREE).once(); List<Node> allReserved = Lists.newArrayList(root); expect(visitor1.revisit(gadget, allReserved)) .andReturn(true).once(); DomWalker.Visitor visitor2 = createMock(DomWalker.Visitor.class); replay(visitor1, visitor2); MutableContent mc = getContent(1); // Mutated once by revisit. DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void reserveRootPrecludesAllElse() throws Exception { Gadget gadget = gadget(); // Visitor1 reserves root, visitor2 never gets anything. DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); expect(visitor1.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_TREE).once(); List<Node> allReserved = Lists.newArrayList(root); expect(visitor1.revisit(gadget, allReserved)) .andReturn(true).once(); DomWalker.Visitor visitor2 = createMock(DomWalker.Visitor.class); replay(visitor1, visitor2); MutableContent mc = getContent(1); // Mutated once by revisit. DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void rewriteThrowsRewritingExceptionIfGetDocumentIsNull() throws Exception { DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); DomWalker.Rewriter rewriter = getRewriter(visitor1); MutableContent mc = createMock(MutableContent.class); expect(mc.getDocument()).andReturn(null); expect(mc.getContent()).andReturn("hello!"); replay(mc); Gadget gadget = gadget(); boolean exceptionCaught = false; try { rewriter.rewrite(gadget, mc); } catch (RewritingException e) { assertEquals(e.getHttpStatusCode(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR); exceptionCaught = true; } assertTrue(exceptionCaught); }
@Test public void rewriteThrowsRewritingExceptionIfGetDocumentIsNull() throws Exception { DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); DomWalker.Rewriter rewriter = getRewriter(visitor1); MutableContent mc = createMock(MutableContent.class); expect(mc.getDocument()).andReturn(null); expect(mc.getContent()).andReturn("hello!"); replay(mc); Gadget gadget = gadget(); boolean exceptionCaught = false; try { rewriter.rewrite(gadget, mc); } catch (RewritingException e) { assertEquals(e.getHttpStatusCode(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR); exceptionCaught = true; } assertTrue(exceptionCaught); }
@Test public void rewriteThrowsRewritingExceptionIfGetDocumentIsNull() throws Exception { DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class); DomWalker.Rewriter rewriter = getRewriter(visitor1); MutableContent mc = createMock(MutableContent.class); expect(mc.getDocument()).andReturn(null); expect(mc.getContent()).andReturn("hello!"); replay(mc); Gadget gadget = gadget(); boolean exceptionCaught = false; try { rewriter.rewrite(gadget, mc); } catch (RewritingException e) { assertEquals(e.getHttpStatusCode(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR); exceptionCaught = true; } assertTrue(exceptionCaught); }
@Test public void allMutateMutatesEveryTime() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); replay(visitor); MutableContent mc = getContent(6); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allMutateMutatesEveryTime() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); replay(visitor); MutableContent mc = getContent(6); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allMutateMutatesEveryTime() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.MODIFY).once(); replay(visitor); MutableContent mc = getContent(6); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allBypassDoesNothing() throws Exception { Gadget gadget = gadget(); // Visitor always bypasses nodes, never gets called with revisit(), // but visits every node in the document. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); replay(visitor); MutableContent mc = getContent(0); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allBypassDoesNothing() throws Exception { Gadget gadget = gadget(); // Visitor always bypasses nodes, never gets called with revisit(), // but visits every node in the document. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); replay(visitor); MutableContent mc = getContent(0); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allBypassDoesNothing() throws Exception { Gadget gadget = gadget(); // Visitor always bypasses nodes, never gets called with revisit(), // but visits every node in the document. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.BYPASS).once(); replay(visitor); MutableContent mc = getContent(0); DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allReserveNodeReservesAll() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); // All nodes are revisited in DFS order. List<Node> allReserved = Lists.newArrayList(root, child1, text1, child2, subchild1, text2); expect(visitor.revisit(gadget, allReserved)) .andReturn(true).once(); replay(visitor); MutableContent mc = getContent(1); // Mutated each revisit. DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allReserveNodeReservesAll() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); // All nodes are revisited in DFS order. List<Node> allReserved = Lists.newArrayList(root, child1, text1, child2, subchild1, text2); expect(visitor.revisit(gadget, allReserved)) .andReturn(true).once(); replay(visitor); MutableContent mc = getContent(1); // Mutated each revisit. DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
@Test public void allReserveNodeReservesAll() throws Exception { Gadget gadget = gadget(); // Visitor mutates every node it sees immediately and inline. DomWalker.Visitor visitor = createMock(DomWalker.Visitor.class); expect(visitor.visit(gadget, root)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, child2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, subchild1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text1)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); expect(visitor.visit(gadget, text2)) .andReturn(DomWalker.Visitor.VisitStatus.RESERVE_NODE).once(); // All nodes are revisited in DFS order. List<Node> allReserved = Lists.newArrayList(root, child1, text1, child2, subchild1, text2); expect(visitor.revisit(gadget, allReserved)) .andReturn(true).once(); replay(visitor); MutableContent mc = getContent(1); // Mutated each revisit. DomWalker.Rewriter rewriter = getRewriter(visitor); rewriter.rewrite(gadget, mc); // Verifying mutations on MutableContent completes the test. verify(mc); }
DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2, visitor3); rewriter.rewrite(gadget, mc);
DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2, visitor3); rewriter.rewrite(gadget, mc);
DomWalker.Rewriter rewriter = getRewriter(visitor1, visitor2, visitor3); rewriter.rewrite(gadget, mc);