Rename opendaylight.mdsal.binding.runtime.spi
[yangtools.git] / data / yang-data-tree-ri / src / test / java / org / opendaylight / yangtools / yang / data / tree / impl / Bug3674Test.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.yang.data.tree.impl;
9
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11
12 import org.junit.jupiter.api.Test;
13 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
14 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
15 import org.opendaylight.yangtools.yang.data.tree.api.DataTree;
16 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
17 import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException;
18 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
19 import org.opendaylight.yangtools.yang.data.tree.impl.di.InMemoryDataTreeFactory;
20
21 /**
22  * BUG-3674: issuing a delete on a non-existent entry must be preserved in
23  *           DataTreeModification, but should appear as UNMODIFIED in the
24  *           resulting DataTreeCandidate.
25  */
26 class Bug3674Test extends AbstractTestModelTest {
27     private DataTree tree;
28
29     @Test
30     void testDeleteOfNonExistingNode() throws DataValidationFailedException {
31         tree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL, SCHEMA_CONTEXT);
32
33         // Create the top-level container
34         final var mod = tree.takeSnapshot().newModification();
35         mod.write(TestModel.TEST_PATH,
36             ImmutableNodes.newContainerBuilder().withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)).build());
37         mod.ready();
38         tree.commit(tree.prepare(mod));
39
40         final var mod2 = tree.takeSnapshot().newModification();
41         mod2.delete(TestModel.OUTER_LIST_PATH);
42         mod2.ready();
43
44         final var candidate = tree.prepare(mod2);
45         final var root = candidate.getRootNode();
46         assertEquals(ModificationType.UNMODIFIED, root.modificationType());
47     }
48 }