2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.sal.dom.store.impl;
10 import org.junit.Test;
13 * Base template for a test suite for testing DataTreeChangeListener functionality.
15 public abstract class DefaultDataTreeChangeListenerTestSuite extends AbstractDataTreeChangeListenerTest {
17 protected static final String FOO_SIBLING = "foo-sibling";
20 public final void putTopLevelOneNested() throws Exception {
22 DatastoreTestTask task = newTestTask().test(writeOneTopMultipleNested(FOO, BAR));
23 putTopLevelOneNestedSetup(task);
25 putTopLevelOneNestedVerify(task);
28 protected abstract void putTopLevelOneNestedSetup(DatastoreTestTask task);
30 protected abstract void putTopLevelOneNestedVerify(DatastoreTestTask task);
33 public final void existingTopWriteSibling() throws Exception {
34 DatastoreTestTask task = newTestTask().setup(writeOneTopMultipleNested(FOO)).test(
35 tx -> tx.write(path(FOO_SIBLING), topLevelList(FOO_SIBLING).build()));
36 existingTopWriteSiblingSetup(task);
38 existingTopWriteSiblingVerify(task);
41 protected abstract void existingTopWriteSiblingSetup(DatastoreTestTask task);
43 protected abstract void existingTopWriteSiblingVerify(DatastoreTestTask task);
46 public final void existingTopWriteTwoNested() throws Exception {
47 DatastoreTestTask task = newTestTask().setup(writeOneTopMultipleNested(FOO)).test(
49 tx.write(path(FOO,BAR), nestedList(BAR).build());
50 tx.write(path(FOO,BAZ), nestedList(BAZ).build());
52 existingTopWriteTwoNestedSetup(task);
54 existingTopWriteTwoNestedVerify(task);
57 protected abstract void existingTopWriteTwoNestedSetup(DatastoreTestTask task);
59 protected abstract void existingTopWriteTwoNestedVerify(DatastoreTestTask task);
63 public final void existingOneNestedWriteAdditionalNested() throws Exception {
64 DatastoreTestTask task = newTestTask().setup(writeOneTopMultipleNested(FOO, BAR)).test(
65 tx -> tx.write(path(FOO,BAZ), nestedList(BAZ).build()));
66 existingOneNestedWriteAdditionalNestedSetup(task);
68 existingOneNestedWriteAdditionalNestedVerify(task);
71 protected abstract void existingOneNestedWriteAdditionalNestedSetup(DatastoreTestTask task);
73 protected abstract void existingOneNestedWriteAdditionalNestedVerify(DatastoreTestTask task);
76 public final void replaceTopLevelNestedChanged() throws Exception {
77 DatastoreTestTask task = newTestTask().setup(writeOneTopMultipleNested(FOO, BAR)).test(
78 writeOneTopMultipleNested(FOO, BAZ));
79 replaceTopLevelNestedSetup(task);
81 replaceTopLevelNestedVerify(task);
84 protected abstract void replaceTopLevelNestedSetup(DatastoreTestTask task);
86 protected abstract void replaceTopLevelNestedVerify(DatastoreTestTask task);
89 public final void putTopLevelWithTwoNested() throws Exception {
91 DatastoreTestTask task = newTestTask().test(writeOneTopMultipleNested(FOO, BAR, BAZ));
92 putTopLevelWithTwoNestedSetup(task);
94 putTopLevelWithTwoNestedVerify(task);
97 protected abstract void putTopLevelWithTwoNestedSetup(DatastoreTestTask task);
99 protected abstract void putTopLevelWithTwoNestedVerify(DatastoreTestTask task);
102 public final void twoNestedExistsOneIsDeleted() throws Exception {
104 DatastoreTestTask task = newTestTask().setup(writeOneTopMultipleNested(FOO, BAR, BAZ)).test(
105 deleteNested(FOO, BAZ));
106 twoNestedExistsOneIsDeletedSetup(task);
108 twoNestedExistsOneIsDeletedVerify(task);
111 protected abstract void twoNestedExistsOneIsDeletedSetup(DatastoreTestTask task);
113 protected abstract void twoNestedExistsOneIsDeletedVerify(DatastoreTestTask task);
116 public final void nestedListExistsRootDeleted() throws Exception {
118 DatastoreTestTask task = newTestTask().cleanup(null).setup(writeOneTopMultipleNested(FOO, BAR, BAZ))
119 .test(DatastoreTestTask.simpleDelete(TOP_LEVEL));
120 nestedListExistsRootDeletedSetup(task);
122 nestedListExistsRootDeletedVerify(task);
125 protected abstract void nestedListExistsRootDeletedSetup(DatastoreTestTask task);
127 protected abstract void nestedListExistsRootDeletedVerify(DatastoreTestTask task);