- private void verifyBarOnlyAdded(final TestListener top, final TestListener all, final TestListener foo,
- final TestListener bar) {
-
- assertFalse(foo.hasEvent());
-
- // Listener for TOP element
- assertContains(top.event().getOriginalData(), TOP);
- assertNotContains(top.event().getOriginalData(),TOP_FOO);
- assertContains(top.event().getCreatedData(), TOP_BAR);
- assertContains(top.event().getUpdatedData(), TOP);
- assertEmpty(top.event().getRemovedPaths());
-
- /*
- * Listener for all list items
- *
- * Updated should be empty, since no list item was
- * updated, items were only removed and added
- */
- assertEmpty(all.event().getOriginalData());
- assertContains(all.event().getCreatedData(), TOP_BAR);
- assertEmpty(all.event().getUpdatedData());
- assertEmpty(all.event().getRemovedPaths());
-
- /*
- * Listener for all Foo item
- *
- * Foo Listener should not have foo event
- */
- assertFalse(foo.hasEvent());
-
- /*
- * Listener for bar list items
- *
- * Updated should be empty, since no list item was
- * updated, items were only removed and added
- */
- assertEmpty(bar.event().getOriginalData());
- assertContains(bar.event().getCreatedData(), TOP_BAR);
- assertEmpty(bar.event().getUpdatedData());
- assertEmpty(bar.event().getRemovedPaths());
+ private Function<DataTreeModification<Top>, Boolean> topSubtreeModified(final TopLevelList topFoo,
+ final TopLevelList topBar) {
+ return match(ModificationType.SUBTREE_MODIFIED, TOP,
+ (Function<Top, Boolean>) dataBefore -> Objects.equals(top(topFoo), dataBefore),
+ dataAfter -> {
+ Set<TopLevelList> expList = new HashSet<>(top(topBar, topFoo).getTopLevelList());
+ Set<TopLevelList> actualList = dataAfter.getTopLevelList().stream()
+ .map(list -> new TopLevelListBuilder(list).build()).collect(Collectors.toSet());
+ return expList.equals(actualList);
+ });