package org.opendaylight.yangtools.yang.data.api.schema.stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import java.io.IOException;
-import java.util.List;
-import java.util.Optional;
import java.util.Set;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerLike;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@ExtendWith(MockitoExtension.class)
public class YangInstanceIdentifierWriterTest {
+ public static EffectiveModelContext CONTEXT;
+
+ @BeforeAll
+ public static void beforeAll() {
+ CONTEXT = YangParserTestUtils.parseYangResourceDirectory("/YT1392");
+ }
+
@Test
public void testYangInstanceIdentifierWriter() throws IOException {
final FormattingNormalizedNodeStreamWriter streamWriter = new FormattingNormalizedNodeStreamWriter();
- final DataNodeContainer root = mock(DataNodeContainer.class);
-
- final ContainerLike containerSchema1 = mock(ContainerLike.class);
- final ContainerLike containerSchema2 = mock(ContainerLike.class);
- final ContainerLike containerSchema3 = mock(ContainerLike.class);
-
- doReturn(containerSchema1).when(root).dataChildByName(any());
- doReturn(containerSchema2).when(containerSchema1).dataChildByName(any());
- doReturn(containerSchema3).when(containerSchema2).dataChildByName(any());
-
final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
.node(QName.create("test", "container-1"))
.node(QName.create("test", "container-2"))
.node(QName.create("test", "container-3"))
.build();
- try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, root, path)) {
+ try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, CONTEXT, path)) {
try (var nnWriter = new NormalizedNodeWriter(streamWriter)) {
nnWriter.write(mockedPayload());
}
public void testAugmentationIdentifier() throws IOException {
final FormattingNormalizedNodeStreamWriter streamWriter = new FormattingNormalizedNodeStreamWriter();
- final ContainerLike root = mock(ContainerLike.class);
final QName augmented = QName.create("augment-namespace", "augmented-container");
- final QName container2Qname = QName.create("augment-namespace", "container-2");
-
- final ContainerLike containerSchema1 = mock(ContainerLike.class);
- final AugmentationSchemaNode augmentationSchema = mock(AugmentationSchemaNode.class);
- final ContainerLike augmentedContainerSchema = mock(ContainerLike.class);
- final ContainerLike containerSchema2 = mock(ContainerLike.class);
-
- doReturn(containerSchema1).when(root).dataChildByName(any());
-
- doReturn(Set.of(augmentationSchema)).when(containerSchema1).getAvailableAugmentations();
- doReturn(augmentedContainerSchema).when(augmentationSchema).dataChildByName(augmented);
-
- doReturn(Set.of(augmentedContainerSchema)).when(augmentationSchema).getChildNodes();
- doReturn(augmented).when(augmentedContainerSchema).getQName();
-
- doReturn(containerSchema2).when(augmentedContainerSchema).dataChildByName(any());
final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
.node(QName.create("test", "container-1"))
.node(AugmentationIdentifier.create(Set.of(augmented)))
.node(augmented)
- .node(container2Qname)
+ .node(QName.create(augmented, "container-2"))
.build();
- try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, root, path)) {
+ try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, CONTEXT, path)) {
try (var nnWriter = new NormalizedNodeWriter(streamWriter)) {
nnWriter.write(mockedPayload());
}
public void testMapIdentifier() throws IOException {
final FormattingNormalizedNodeStreamWriter streamWriter = new FormattingNormalizedNodeStreamWriter();
- final ContainerLike root = mock(ContainerLike.class);
- final ListSchemaNode listSchemaNode = mock(ListSchemaNode.class);
-
- final MapEntryNode listEntry = mock(MapEntryNode.class);
-
- final ContainerLike containerSchema1 = mock(ContainerLike.class);
- final QName container1Qname = QName.create("test", "container-1");
- final QName list1KeyQname = QName.create("test", "list-1-key");
final QName listQname = QName.create("test", "list-1");
- doReturn(listQname).when(listSchemaNode).getQName();
- doReturn(listSchemaNode).when(root).dataChildByName(any());
- doReturn(List.of(list1KeyQname)).when(listSchemaNode).getKeyDefinition();
- doReturn(containerSchema1).when(listSchemaNode).dataChildByName(container1Qname);
- doReturn("test-list-entry").when(listEntry).toString();
-
final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
.node(listQname)
- .nodeWithKey(listQname,list1KeyQname, listEntry)
- .node(container1Qname)
+ .nodeWithKey(listQname, QName.create("test", "list-1-key"), "test-list-entry")
+ .node(QName.create("test", "container-1"))
.build();
- try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, root, path)) {
+ try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, CONTEXT, path)) {
try (var nnWriter = new NormalizedNodeWriter(streamWriter)) {
nnWriter.write(mockedPayload());
}
@Test
public void testChoiceIdentifier() throws IOException {
final FormattingNormalizedNodeStreamWriter streamWriter = new FormattingNormalizedNodeStreamWriter();
- final ContainerLike root = mock(ContainerLike.class);
- final ChoiceSchemaNode choiceSchemaNode = mock(ChoiceSchemaNode.class);
- final CaseSchemaNode caseSchemaNode = mock(CaseSchemaNode.class);
- final ContainerLike caseContainer = mock(ContainerLike.class);
-
- final QName choiceQname = QName.create("test", "choice-node");
- final QName caseQname = QName.create("test", "container-in-case");
-
- doReturn(choiceSchemaNode).when(root).dataChildByName(choiceQname);
- doReturn(Set.of(caseSchemaNode)).when(choiceSchemaNode).getCases();
- doCallRealMethod().when(choiceSchemaNode).findDataSchemaChild(any());
- doReturn(Optional.of(caseContainer)).when(caseSchemaNode).findDataChildByName(any());
final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
- .node(choiceQname)
- .node(caseQname)
+ .node(QName.create("test", "choice-node"))
+ .node(QName.create("test", "container-in-case"))
.build();
- try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, root, path)) {
+ try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, CONTEXT, path)) {
try (var nnWriter = new NormalizedNodeWriter(streamWriter)) {
nnWriter.write(mockedPayload());
}
public void testLeafSetIdentifier() throws IOException {
final FormattingNormalizedNodeStreamWriter streamWriter = new FormattingNormalizedNodeStreamWriter();
- final ContainerLike root = mock(ContainerLike.class);
- final LeafListSchemaNode leafSetSchema = mock(LeafListSchemaNode.class);
-
- doReturn(leafSetSchema).when(root).dataChildByName(any());
-
final YangInstanceIdentifier path = YangInstanceIdentifier.builder()
.node(QName.create("test", "list-list"))
.build();
- try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, root, path)) {
+ try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, CONTEXT, path)) {
try (var nnWriter = new NormalizedNodeWriter(streamWriter)) {
final QName leafQname = QName.create("test", "leaf");