/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteChangeValue(org.w3c.dom.NodeList, * java.util.ArrayList)} . * * @throws XMLWeaverException */ @Test public void testInterpreteChangeValue() throws XMLWeaverException { NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:author", document); oInterpreter.interpreteChangeValue(joinPoints, testText3); assertTrue( "the selected elements have a textNode with the corresponding value", xPathEvaluator .evaluateXPath("//books:book/books:author/text()", document) .item(2) .getNodeValue() .contentEquals("text2")); assertTrue( "old textContent was removed", xPathEvaluator .evaluateXPath("//books:book/books:author/text()", document) .item(2) .getNodeValue() .contains("mixedContent") == false); joinPoints = xPathEvaluator.evaluateXPath("//books:book/attribute::inStock", document); oInterpreter.interpreteChangeValue(joinPoints, testText3); assertTrue( "the attribute was changed", xPathEvaluator .evaluateXPath("//books:book[3]/attribute::inStock", document) .item(0) .getNodeValue() .contentEquals("text2")); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteFillComponentByID(java.lang.String, * java.lang.String, org.w3c.dom.NodeList, java.util.List)} . * * @throws XMLWeaverException */ @Test public void testInterpreteFillComponentByID() throws XMLWeaverException { final Document listTarget = parser.buildDOM(URI.create("testData/bookList.xml")); final Document bookSource = parser.buildDOM(URI.create("testData/book.xml")); final NodeList joinPoints = xPathEvaluator.evaluateXPath("//book", listTarget); final NodeList sourceComps = xPathEvaluator.evaluateXPath("//books:book", bookSource); final List<Element> sourceComponents = new ArrayList<Element>(); sourceComponents.add((Element) sourceComps.item(0)); sourceComponents.add((Element) sourceComps.item(1)); sourceComponents.add((Element) sourceComps.item(2)); oInterpreter.interpreteFillComponentByID("price", "price", joinPoints, sourceComponents); NodeList result = xPathEvaluator.evaluateXPath("//book//books:name/text()", listTarget); assertTrue( "JoinPoints are filled with the correct nodes", (result.item(0).getNodeValue().contentEquals("Sam") & result.item(1).getNodeValue().contentEquals("M.")) & result.item(2).getNodeValue().contentEquals("A")); oInterpreter.interpreteFillComponentByID("price", "price", joinPoints, sourceComponents); result = xPathEvaluator.evaluateXPath("//book//books:name/text()", listTarget); assertTrue( "Already existing nodes in joinPoints are kept", (result.item(0).getNodeValue().contentEquals("Sam") & result.item(1).getNodeValue().contentEquals("Sam")) & result.item(2).getNodeValue().contentEquals("M.")); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteReduceContent(org.w3c.dom.NodeList, * java.lang.String)} . * * @throws XMLWeaverException */ @Test public void testInterpreteReduceContent() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:publisher", document); oInterpreter.interpreteReduceContent(joinPoints, "Media"); assertTrue("", joinPoints.item(0).getFirstChild().getNodeValue().contentEquals("VVM")); oInterpreter.interpreteReduceContent(joinPoints, ""); assertTrue("no textNode should be left", joinPoints.item(0).getChildNodes().getLength() == 0); oInterpreter.interpreteReduceContent(joinPoints, null); assertTrue("no textNode should be left", joinPoints.item(0).getChildNodes().getLength() == 0); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteInsertElement(org.w3c.dom.NodeList, * java.util.ArrayList, int)} . * * @throws XMLWeaverException */ @Test public void testInterpreteInsertElement() throws XMLWeaverException { NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:title[1]", document); final int lengthOld = joinPoints.item(0).getChildNodes().getLength(); oInterpreter.interpreteInsertElement(joinPoints, testElements3, 0); assertTrue(joinPoints.item(1).getChildNodes().item(0).getNodeName().contentEquals("test1")); assertTrue(joinPoints.item(2).getChildNodes().item(0).getNodeName().contentEquals("test2")); assertTrue( "exactly one Node has to be added", joinPoints.item(0).getChildNodes().getLength() - 1 == lengthOld); joinPoints = xPathEvaluator.evaluateXPath("//books:book[1]", document); oInterpreter.interpreteInsertElement(joinPoints, testElements1, 0); assertTrue( "inserted element must be at position 0", joinPoints.item(0).getChildNodes().item(0).getNodeName().contentEquals("test0")); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpretChangeOrder(org.w3c.dom.NodeList, * java.lang.String)} . This test method must throw an {@link XMLWeaverException} because the * given permutation is incorrect, since there is a duplicate mapping to a position * * @throws XMLWeaverException */ @Test(expected = XMLWeaverException.class) public void testInterpretChangeOrderDuplicate() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book[3]/books:author", document); final String permutation = "(2 2 1)"; oInterpreter.interpretChangeOrder(joinPoints, permutation); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteCollapseElement(org.w3c.dom.NodeList, * java.util.ArrayList)} . * * @throws XMLWeaverException */ @Test public void testInterpreteCollapseElement() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:title", document); oInterpreter.interpreteCollapseElement(joinPoints, testText3); assertTrue( "the nodes have a textNode", xPathEvaluator.evaluateXPath("//books:book/books:title/text()", document).getLength() == 3); assertTrue( "the nodes have no other child left", xPathEvaluator.evaluateXPath("//books:book/books:title/*[2]", document).getLength() == 0); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteFillComponentByID(java.lang.String, * java.lang.String, org.w3c.dom.NodeList, java.util.List)} . * * @throws XMLWeaverException */ @Test(expected = XMLWeaverException.class) public void testInterpreteFillComponentByIDSameNode() throws XMLWeaverException { final Document target = parser.buildDOM(URI.create("testData/bookList.xml")); final Document source = target; final NodeList joinPoints = xPathEvaluator.evaluateXPath("//book", target); final NodeList sourceComps = xPathEvaluator.evaluateXPath("//book", source); final List<Element> sourceComponents = new ArrayList<Element>(); sourceComponents.add((Element) sourceComps.item(0)); sourceComponents.add((Element) sourceComps.item(1)); sourceComponents.add((Element) sourceComps.item(2)); oInterpreter.interpreteFillComponentByID("price", "price", joinPoints, sourceComponents); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpretChangeOrder(org.w3c.dom.NodeList, * java.lang.String)} . * * @throws XMLWeaverException */ @Test public void testInterpretChangeOrder() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book[3]/books:author", document); String permutation = "(2 3 1)"; oInterpreter.interpretChangeOrder(joinPoints, permutation); final String[] nodes = new String[3]; NodeList result = xPathEvaluator .evaluateXPath("//books:book[3]/books:author", document) .item(0) .getChildNodes(); nodes[0] = result.item(0).getNodeName(); nodes[1] = result.item(1).getNodeName(); nodes[2] = result.item(2).getNodeName(); final String[] expected = new String[3]; expected[0] = "lastName"; expected[1] = "#text"; expected[2] = "name"; assertArrayEquals("the children's order was changed correctly", expected, nodes); permutation = "(3 1 2)"; oInterpreter.interpretChangeOrder(joinPoints, permutation); result = xPathEvaluator .evaluateXPath("//books:book[3]/books:author", document) .item(0) .getChildNodes(); nodes[0] = result.item(0).getNodeName(); nodes[1] = result.item(1).getNodeName(); nodes[2] = result.item(2).getNodeName(); expected[2] = "lastName"; expected[0] = "#text"; expected[1] = "name"; assertArrayEquals("the children's order was changed correctly", expected, nodes); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteMoveElement(org.w3c.dom.Node, * org.w3c.dom.Node, int)} . * * @throws XMLWeaverException */ @Test public void testInterpreteMoveElement() throws XMLWeaverException { Node joinPoint = xPathEvaluator.evaluateXPath("//books:book[1]/books:title", document).item(0); final Node target = xPathEvaluator.evaluateXPath("//books:book[2]/books:title", document).item(0); final int lengthOld = target.getChildNodes().getLength(); oInterpreter.interpreteMoveElement(joinPoint, target, 1); joinPoint = xPathEvaluator.evaluateXPath("//books:book[1]/books:title", document).item(0); assertTrue( "target should have one more child now", target.getChildNodes().getLength() == lengthOld + 1); assertNull( "source should be null now", xPathEvaluator.evaluateXPath("//books:book[1]/books:title", document).item(0)); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteEnrichContent(org.w3c.dom.NodeList, * int, java.util.ArrayList)} . * * @throws XMLWeaverException because the enriched nodes have to be elementNodes */ @Test(expected = XMLWeaverException.class) public void testInterpreteEnrichContentWrongNodeType() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book[1]/books:title/text()", document); final int position = -1; final ArrayList<Text> valueList = new ArrayList<Text>() { private static final long serialVersionUID = 1L; { add(document.createTextNode("data")); } }; oInterpreter.interpreteEnrichContent(joinPoints, position, valueList); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteEnrichContent(org.w3c.dom.NodeList, * int, java.util.ArrayList)} . The {@link IndexOutOfBoundsException} is thrown because any * joinPoint needs a textNode * * @throws XMLWeaverException */ @Test(expected = IndexOutOfBoundsException.class) public void testInterpreteEnrichContentNotEnoughArgs() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book", document); final int position = -1; final ArrayList<Text> valueList = new ArrayList<Text>() { private static final long serialVersionUID = 1L; { add(document.createTextNode("data")); add(document.createTextNode("data")); } }; oInterpreter.interpreteEnrichContent(joinPoints, position, valueList); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteDelete(org.w3c.dom.NodeList)} * . * * @throws XMLWeaverException */ @Test public void testInterpreteDelete() throws XMLWeaverException { NodeList nodeList = xPathEvaluator.evaluateXPath("//books:book/attribute::inStock", document); oInterpreter.interpreteDelete(nodeList); assertTrue( "attribute was removed", (xPathEvaluator.evaluateXPath("//books:book/attribute::inStock", document)).getLength() == 0); nodeList = xPathEvaluator.evaluateXPath("//books:book/books:title/text()", document); oInterpreter.interpreteDelete(nodeList); assertTrue( "textNodes are removed", (xPathEvaluator.evaluateXPath("//books:book/books:title/text()", document)).getLength() == 0); nodeList = xPathEvaluator.evaluateXPath("//books:book[1]/books:title", document); oInterpreter.interpreteDelete(nodeList); assertTrue( "no nodes of type \"title\" should be left in the first book", (xPathEvaluator.evaluateXPath("//books:book[1]/books:title", document)).getLength() == 0); nodeList = xPathEvaluator.evaluateXPath("//books:book", document); oInterpreter.interpreteDelete(nodeList); assertTrue( "no books left", (xPathEvaluator.evaluateXPath("//books:book", document)).getLength() == 0); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteChooseVariant(org.w3c.dom.NodeList)} * . * * @throws XMLWeaverException */ @Test public void testInterpreteChooseVariant() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book[1]", document); oInterpreter.interpreteChooseVariant(joinPoints); assertTrue( "only one variant should be left", xPathEvaluator.evaluateXPath("//books:book", document).getLength() == 1); assertTrue( "the variant left should be the right one", (xPathEvaluator .evaluateXPath("//books:book/books:author/books:name", document) .item(0) .getTextContent() .contentEquals("Sam"))); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteExpandElement(org.w3c.dom.NodeList, * java.util.ArrayList)} . * * @throws XMLWeaverException */ @Test public void testInterpreteExpandElement() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:title", document); oInterpreter.interpreteExpandElement(joinPoints, testElements3); assertTrue( "no textNodes are left", (xPathEvaluator.evaluateXPath("//books:book/books:title/text()", document).getLength() == 0)); assertTrue( "the nodes have a new child", (xPathEvaluator.evaluateXPath("//books:book/books:title/*[1]", document).getLength() == 3)); assertTrue( "the node's name must be test2", (xPathEvaluator.evaluateXPath("//books:book[3]/books:title/test2", document).getLength() == 1)); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteEnrichContent(org.w3c.dom.NodeList, * int, java.util.ArrayList)} . * * @throws XMLWeaverException */ @Test public void testInterpreteEnrichContent() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book", document); final int position = -1; final ArrayList<Text> valueList = new ArrayList<Text>() { private static final long serialVersionUID = 1L; { add(document.createTextNode("data")); add(document.createTextNode("data")); add(document.createTextNode("data")); } }; oInterpreter.interpreteEnrichContent(joinPoints, position, valueList); final NodeList result = xPathEvaluator.evaluateXPath("//books:book", document); assertTrue( "every book should now have a textNode", result.getLength() == joinPoints.getLength()); }
/** * Test method for {@link * net.hyperadapt.pxweave.interpreter.test.OperationInterpreter#interpreteInsertElement(org.w3c.dom.NodeList, * java.util.ArrayList, int)} . * * @throws XMLWeaverException */ @Test(expected = XMLWeaverException.class) public void testInterpreteInsertElementNoElement() throws XMLWeaverException { final NodeList joinPoints = xPathEvaluator.evaluateXPath("//books:book/books:title[1]/text()", document); oInterpreter.interpreteInsertElement(joinPoints, testElements1, -1); }