Guest User

Untitled

a guest
Dec 13th, 2017
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. import org.xmlunit.builder.DiffBuilder;
  2. import org.xmlunit.builder.Input;
  3. import org.xmlunit.diff.Diff;
  4. import org.xmlunit.diff.Difference;
  5.  
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9.  
  10. import static org.junit.Assert.assertEquals;
  11.  
  12. public class SolDifferenceEvaluatorChain {
  13. public static void main(String[] args) {
  14. String control = "<Parent>\n" +
  15. " <Costum>\n" +
  16. " <Work>\n" +
  17. " <Person>\n" +
  18. " <FirstName>John</FirstName>\n" +
  19. " <LastName>Doe</LastName>\n" +
  20. " <Email>johndoe@email.com</Email>\n" +
  21. " </Person>\n" +
  22. " <Person>\n" +
  23. " <FirstName>Mickey</FirstName>\n" +
  24. " <LastName>Mouse</LastName>\n" +
  25. " <Email>mm@email.com</Email>\n" +
  26. " </Person>\n" +
  27. " <Person>\n" +
  28. " <FirstName>HO</FirstName>\n" +
  29. " <LastName>FRT</LastName>\n" +
  30. " <Email>mm@email.com</Email>\n" +
  31. " </Person>\n" +
  32. " </Work>\n" +
  33. " </Costum>\n" +
  34. "</Parent>";
  35. String test = "<Parent>\n" +
  36. " <Costum>\n" +
  37. " <Work>\n" +
  38. " <Person>\n" +
  39. " <FirstName>John</FirstName>\n" +
  40. " <LastName>Doe</LastName>\n" +
  41. " <Email>johndoe@email.com</Email>\n" +
  42. " </Person>\n" +
  43.  
  44. " <Person>\n" +
  45. " <FirstName>HO</FirstName>\n" +
  46. " <LastName>FRT</LastName>\n" +
  47. " <Email>mm@email.com</Email>\n" +
  48. " </Person>\n" +
  49. " <Person>\n" +
  50. " <FirstName>Mickey</FirstName>\n" +
  51. " <LastName>Mouse</LastName>\n" +
  52. " <Email>mm@email.com</Email>\n" +
  53. " </Person>\n" +
  54. " </Work>\n" +
  55. " </Costum>\n" +
  56. "</Parent>";
  57.  
  58. Diff myDiff = DiffBuilder.compare(Input.fromString(control))
  59. .withTest(Input.fromString(test))
  60. .ignoreWhitespace()
  61. .checkForSimilar()
  62. .build();
  63.  
  64. ArrayList<String> arrayOfDiff = new ArrayList<String>();
  65. for (Difference di : myDiff.getDifferences()) {
  66. System.out.println(di);
  67.  
  68. //Micky
  69. String valueControl = di.getComparison().getControlDetails().getTarget().getNodeValue();
  70. String valueTest = di.getComparison().getTestDetails().getTarget().getNodeValue();
  71.  
  72. //Firstname
  73. String nodeControl = di.getComparison().getControlDetails().getTarget().getParentNode().getLocalName();
  74. String nodeTest = di.getComparison().getTestDetails().getTarget().getParentNode().getLocalName();
  75.  
  76. //Person
  77. String ownerNode = di.getComparison().getControlDetails().getTarget().getParentNode().getParentNode().getLocalName();
  78. String ownerTest = di.getComparison().getTestDetails().getTarget().getParentNode().getParentNode().getLocalName();
  79.  
  80. String pathControl = ownerNode + "/" + nodeControl + "/" + valueControl;
  81. String pathTest = ownerTest + "/" + nodeTest + "/" + valueTest;
  82.  
  83. arrayOfDiff.add(pathControl);
  84. arrayOfDiff.add(pathTest);
  85.  
  86. System.out.println(valueControl + " " + nodeControl + " " + ownerNode);
  87. }
  88.  
  89. ArrayList<String> duplicates = new ArrayList<>();
  90. for (int i = 0; i < arrayOfDiff.size(); i++) {
  91. if (duplicates.contains(arrayOfDiff.get(i))) {
  92. continue;
  93. }
  94. for (int j = i + 1; j < arrayOfDiff.size(); j++) {
  95. if (arrayOfDiff.get(i).equals(arrayOfDiff.get(j))) {
  96. duplicates.add(arrayOfDiff.get(i));
  97. break;
  98. }
  99. }
  100. }
  101. List<String> distinctElementsControl = arrayOfDiff.stream().distinct().collect(Collectors.toList());
  102. System.out.println(distinctElementsControl);
  103. System.out.println(duplicates);
  104. assertEquals("В документе есть различия", distinctElementsControl, duplicates);
  105. }
  106. }
Add Comment
Please, Sign In to add comment