package org.opendaylight.yangtools.yang.data.tree.spi;
import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.doReturn;
import java.util.List;
import java.util.Optional;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.tree.api.CursorAwareDataTreeModification;
import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModificationCursor;
import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class DataTreeCandidatesTest {
+ private static final NodeIdentifier FOO = new NodeIdentifier(QName.create("foo", "foo"));
@Test
public void testNewDataTreeCandidate() {
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
- final DataTreeCandidate dataTreeCandidate = DataTreeCandidates.newDataTreeCandidate(mockedRootPath,
- mockedDataTreeCandidateNode);
+ final DataTreeCandidate dataTreeCandidate = DataTreeCandidates.newDataTreeCandidate(
+ YangInstanceIdentifier.empty(), mockedDataTreeCandidateNode);
- assertNotNull(dataTreeCandidate);
- assertTrue(dataTreeCandidate instanceof DefaultDataTreeCandidate);
- assertEquals(mockedRootPath, dataTreeCandidate.getRootPath());
+ assertThat(dataTreeCandidate, instanceOf(DefaultDataTreeCandidate.class));
+ assertSame(YangInstanceIdentifier.empty(), dataTreeCandidate.getRootPath());
assertEquals(mockedDataTreeCandidateNode, dataTreeCandidate.getRootNode());
- assertTrue(dataTreeCandidate.toString().contains(
- "DefaultDataTreeCandidate{rootPath=/, rootNode=Mock for DataTreeCandidateNode, hashCode: "));
+ assertThat(dataTreeCandidate.toString(),
+ containsString("DefaultDataTreeCandidate{rootPath=/, rootNode=Mock for DataTreeCandidateNode, hashCode: "));
}
@Test
public void testFromNormalizedNode() {
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
final NormalizedNode mockedNormalizedNode = mock(NormalizedNode.class);
- final DataTreeCandidate dataTreeCandidate = DataTreeCandidates.fromNormalizedNode(mockedRootPath,
- mockedNormalizedNode);
+ final DataTreeCandidate dataTreeCandidate = DataTreeCandidates.fromNormalizedNode(
+ YangInstanceIdentifier.empty(), mockedNormalizedNode);
- assertNotNull(dataTreeCandidate);
- assertTrue(dataTreeCandidate instanceof DefaultDataTreeCandidate);
- assertEquals(mockedRootPath, dataTreeCandidate.getRootPath());
- assertTrue(dataTreeCandidate.getRootNode() instanceof NormalizedNodeDataTreeCandidateNode);
+ assertThat(dataTreeCandidate, instanceOf(DefaultDataTreeCandidate.class));
+ assertSame(YangInstanceIdentifier.empty(), dataTreeCandidate.getRootPath());
+ assertThat(dataTreeCandidate.getRootNode(), instanceOf(NormalizedNodeDataTreeCandidateNode.class));
}
@Test
final DataTreeCandidate mockedDataTreeCandidate = mock(DataTreeCandidate.class);
final CursorAwareDataTreeModification mockedModification = mock(CursorAwareDataTreeModification.class);
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
- final YangInstanceIdentifier mockedRootPathParent = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPathParent).when(mockedRootPath).getParent();
+ doReturn(YangInstanceIdentifier.create(FOO)).when(mockedDataTreeCandidate).getRootPath();
final DataTreeModificationCursor mockedCursor = mock(DataTreeModificationCursor.class);
- doReturn(Optional.of(mockedCursor)).when(mockedModification).openCursor(mockedRootPathParent);
+ doReturn(Optional.of(mockedCursor)).when(mockedModification).openCursor(YangInstanceIdentifier.empty());
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
doReturn(ModificationType.DELETE).when(mockedDataTreeCandidateNode).getModificationType();
DataTreeCandidates.applyToModification(mockedModification, mockedDataTreeCandidate);
- verify(mockedRootPath, times(1)).getParent();
- verify(mockedModification, times(1)).openCursor(mockedRootPathParent);
- verify(mockedCursor, times(1)).delete(isNull());
+ verify(mockedModification, times(1)).openCursor(YangInstanceIdentifier.empty());
+ verify(mockedCursor, times(1)).delete(FOO);
}
@Test
public void testApplyToCursorAwareModificationRoot() {
final DataTreeCandidate mockedDataTreeCandidate = mock(DataTreeCandidate.class);
final CursorAwareDataTreeModification mockedModification = mock(CursorAwareDataTreeModification.class);
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
- doReturn(null).when(mockedRootPath).getParent();
+ doReturn(YangInstanceIdentifier.empty()).when(mockedDataTreeCandidate).getRootPath();
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
doReturn(ModificationType.DELETE).when(mockedDataTreeCandidateNode).getModificationType();
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
+ doReturn(YangInstanceIdentifier.empty()).when(mockedDataTreeCandidate).getRootPath();
doReturn(ModificationType.DELETE).when(mockedDataTreeCandidateNode).getModificationType();
DataTreeCandidates.applyToModification(mockedModification, mockedDataTreeCandidate);
- verify(mockedModification, times(1)).delete(any(YangInstanceIdentifier.class));
+ verify(mockedModification, times(1)).delete(YangInstanceIdentifier.empty());
}
@Test
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
+ doReturn(YangInstanceIdentifier.empty()).when(mockedDataTreeCandidate).getRootPath();
final NormalizedNode mockedNormalizedNode = mock(NormalizedNode.class);
doReturn(Optional.of(mockedNormalizedNode)).when(mockedDataTreeCandidateNode).getDataAfter();
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
+ doReturn(YangInstanceIdentifier.empty()).when(mockedDataTreeCandidate).getRootPath();
doReturn(ModificationType.SUBTREE_MODIFIED).when(mockedDataTreeCandidateNode).getModificationType();
final DataTreeCandidateNode mockedChildNode3 = mock(DataTreeCandidateNode.class);
doReturn(ModificationType.SUBTREE_MODIFIED).when(mockedChildNode3).getModificationType();
- final PathArgument mockedPathArgument3 = mock(PathArgument.class);
- doReturn(mockedPathArgument3).when(mockedChildNode3).getIdentifier();
final DataTreeCandidateNode mockedChildNode3ChildNode = mock(DataTreeCandidateNode.class);
doReturn(ModificationType.DELETE).when(mockedChildNode3ChildNode).getModificationType();
final PathArgument mockedPathArgument31 = mock(PathArgument.class);
+ final PathArgument mockedPathArgument3 = mock(PathArgument.class);
doReturn(mockedPathArgument3).when(mockedChildNode3).getIdentifier();
doReturn(mockedPathArgument31).when(mockedChildNode3ChildNode).getIdentifier();
doReturn(List.of(mockedChildNode3ChildNode)).when(mockedChildNode3).getChildNodes();
final DataTreeCandidateNode mockedDataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(mockedDataTreeCandidateNode).when(mockedDataTreeCandidate).getRootNode();
- final YangInstanceIdentifier mockedRootPath = mock(YangInstanceIdentifier.class);
- doReturn(mockedRootPath).when(mockedDataTreeCandidate).getRootPath();
+ doReturn(YangInstanceIdentifier.empty()).when(mockedDataTreeCandidate).getRootPath();
doReturn(ModificationType.APPEARED).when(mockedDataTreeCandidateNode).getModificationType();