From a2f121e56d112711c33bf40680e2e460c3a00cb4 Mon Sep 17 00:00:00 2001 From: Peter Nosal Date: Fri, 29 Jul 2016 09:49:16 +0200 Subject: [PATCH] Bug 5947: additional test for binding-dom-adapter Change-Id: I4cd34de1e706eb46f2f1ddef4a89a7cc560d20d3 Signed-off-by: Peter Nosal --- ...dingDOMDataTreeWriteCursorAdapterTest.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapterTest.java diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapterTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapterTest.java new file mode 100644 index 0000000000..30a17e0149 --- /dev/null +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapterTest.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.binding.dom.adapter; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import com.google.common.collect.ImmutableList; +import java.lang.reflect.Field; +import java.util.AbstractMap.SimpleEntry; +import java.util.Deque; +import org.junit.Test; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; +import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry; +import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.Item; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +public class BindingDOMDataTreeWriteCursorAdapterTest { + + @Test + public void basicTest() throws Exception { + final DataTreeIdentifier identifier = + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(DataObject.class)); + final DOMDataTreeWriteCursor delegate = mock(DOMDataTreeWriteCursor.class); + final BindingNormalizedNodeCodecRegistry registry = mock(BindingNormalizedNodeCodecRegistry.class); + final BindingToNormalizedNodeCodec codec = + new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), registry); + final BindingDOMDataTreeWriteCursorAdapter adapter = + new BindingDOMDataTreeWriteCursorAdapter<>(identifier, delegate, codec); + + final PathArgument pathArgument = new Item<>(DataObject.class); + final DataObject data = mock(DataObject.class); + + adapter.enter(pathArgument, pathArgument); + adapter.enter(ImmutableList.of(pathArgument)); + + doNothing().when(delegate).write(any(), any()); + doNothing().when(delegate).merge(any(), any()); + doNothing().when(delegate).delete(any()); + doReturn(YangInstanceIdentifier.EMPTY).when(registry).toYangInstanceIdentifier(any()); + doNothing().when(delegate).close(); + final NormalizedNode normalizedNode = mock(NormalizedNode.class); + + doReturn(new SimpleEntry>(YangInstanceIdentifier.EMPTY, + normalizedNode)).when(registry).toNormalizedNode(any(), any()); + adapter.write(pathArgument, data); + verify(delegate).write(any(), any()); + + adapter.merge(pathArgument, data); + verify(delegate).merge(any(), any()); + + adapter.delete(pathArgument); + verify(delegate).delete(any()); + + final Field stackField = BindingDOMDataTreeWriteCursorAdapter.class.getDeclaredField("stack"); + stackField.setAccessible(true); + final Deque stack = (Deque) stackField.get(adapter); + assertTrue(stack.contains(pathArgument)); + + adapter.exit(stack.size()); + assertFalse(stack.contains(pathArgument)); + + adapter.close(); + verify(delegate).close(); + } +} \ No newline at end of file -- 2.36.6