Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.xmlunit.builder.DiffBuilder;
- import org.xmlunit.builder.Input;
- import org.xmlunit.diff.Diff;
- import org.xmlunit.diff.Difference;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- import static org.junit.Assert.assertEquals;
- public class SolDifferenceEvaluatorChain {
- public static void main(String[] args) {
- String control = "<Parent>\n" +
- " <Costum>\n" +
- " <Work>\n" +
- " <Person>\n" +
- " <FirstName>John</FirstName>\n" +
- " <LastName>Doe</LastName>\n" +
- " <Email>johndoe@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>Mickey</FirstName>\n" +
- " <LastName>Mouse</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>HO</FirstName>\n" +
- " <LastName>FRT</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " </Work>\n" +
- " </Costum>\n" +
- "</Parent>";
- String test = "<Parent>\n" +
- " <Costum>\n" +
- " <Work>\n" +
- " <Person>\n" +
- " <FirstName>John</FirstName>\n" +
- " <LastName>Doe</LastName>\n" +
- " <Email>johndoe@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>HO</FirstName>\n" +
- " <LastName>FRT</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>Mickey</FirstName>\n" +
- " <LastName>Mouse</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " </Work>\n" +
- " </Costum>\n" +
- "</Parent>";
- Diff myDiff = DiffBuilder.compare(Input.fromString(control))
- .withTest(Input.fromString(test))
- .ignoreWhitespace()
- .checkForSimilar()
- .build();
- ArrayList<String> arrayOfDiff = new ArrayList<String>();
- for (Difference di : myDiff.getDifferences()) {
- System.out.println(di);
- //Micky
- String valueControl = di.getComparison().getControlDetails().getTarget().getNodeValue();
- String valueTest = di.getComparison().getTestDetails().getTarget().getNodeValue();
- //Firstname
- String nodeControl = di.getComparison().getControlDetails().getTarget().getParentNode().getLocalName();
- String nodeTest = di.getComparison().getTestDetails().getTarget().getParentNode().getLocalName();
- //Person
- String ownerNode = di.getComparison().getControlDetails().getTarget().getParentNode().getParentNode().getLocalName();
- String ownerTest = di.getComparison().getTestDetails().getTarget().getParentNode().getParentNode().getLocalName();
- String pathControl = ownerNode + "/" + nodeControl + "/" + valueControl;
- String pathTest = ownerTest + "/" + nodeTest + "/" + valueTest;
- arrayOfDiff.add(pathControl);
- arrayOfDiff.add(pathTest);
- System.out.println(valueControl + " " + nodeControl + " " + ownerNode);
- }
- ArrayList<String> duplicates = new ArrayList<>();
- for (int i = 0; i < arrayOfDiff.size(); i++) {
- if (duplicates.contains(arrayOfDiff.get(i))) {
- continue;
- }
- for (int j = i + 1; j < arrayOfDiff.size(); j++) {
- if (arrayOfDiff.get(i).equals(arrayOfDiff.get(j))) {
- duplicates.add(arrayOfDiff.get(i));
- break;
- }
- }
- }
- List<String> distinctElementsControl = arrayOfDiff.stream().distinct().collect(Collectors.toList());
- System.out.println(distinctElementsControl);
- System.out.println(duplicates);
- assertEquals("В документе есть различия", distinctElementsControl, duplicates);
- }
- }
Add Comment
Please, Sign In to add comment