*/
package org.opendaylight.mdsal.binding.dom.adapter;
-import static org.junit.Assert.assertFalse;
+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.assertTrue;
-import static org.mockito.MockitoAnnotations.initMocks;
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.mock;
-import javax.annotation.Nullable;
+import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.TransactionChainListener;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMService;
+import org.opendaylight.yang.gen.v1.bug8449.rev170516.Top;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class BindingDOMAdapterLoaderTest {
-
@Mock
private DOMDataBroker domService;
-
@Mock
- private BindingNormalizedNodeCodecRegistry mockCodecRegistry;
+ private AdapterContext mockContext;
private BindingDOMAdapterLoader bindingDOMAdapterLoader;
- private BindingDOMDataBrokerAdapter bindingDOMDataBrokerAdapter;
@Before
- public void setUp() throws Exception {
- initMocks(this);
- bindingDOMAdapterLoader = new BindingDOMAdapterLoader(
- new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
- mockCodecRegistry)) {
- @Nullable
+ public void setUp() {
+ bindingDOMAdapterLoader = new BindingDOMAdapterLoader(mockContext) {
@Override
- protected DOMService getDelegate(final Class<? extends DOMService> reqDeleg) {
+ protected DOMService<?, ?> getDelegate(final Class<? extends DOMService<?, ?>> reqDeleg) {
return domService;
}
};
}
@Test
- public void createBuilderTest() throws Exception {
- assertTrue(bindingDOMAdapterLoader.load(DataBroker.class).get() instanceof BindingDOMDataBrokerAdapter);
+ public void createBuilderTest() {
+ assertDataBrokerAdapter();
domService = null;
- assertFalse(bindingDOMAdapterLoader.load(DataBroker.class).isPresent());
+ assertEquals(Optional.empty(), bindingDOMAdapterLoader.load(DataBroker.class));
+ }
+
+ @Test
+ public void createChainTest() {
+ final var adapter = assertDataBrokerAdapter();
+ assertNotNull(adapter.createTransactionChain(mock(TransactionChainListener.class)));
}
@Test
- public void createChainTest() throws Exception {
- bindingDOMDataBrokerAdapter
- = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
- assertNotNull(bindingDOMDataBrokerAdapter.createTransactionChain(null));
+ public void registerWithException() {
+ final var adapter = assertDataBrokerAdapter();
+ final var ex = assertThrows(UnsupportedOperationException.class, () -> adapter.registerDataTreeChangeListener(
+ DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Top.class)),
+ mock(DataTreeChangeListener.class)));
+ assertEquals("Underlying data broker does not expose DOMDataTreeChangeService.", ex.getMessage());
}
- @Test(expected = UnsupportedOperationException.class)
- public void registerWithException() throws Exception {
- bindingDOMDataBrokerAdapter
- = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
- bindingDOMDataBrokerAdapter.registerDataTreeChangeListener(null,null);
+ private BindingDOMDataBrokerAdapter assertDataBrokerAdapter() {
+ final var service = bindingDOMAdapterLoader.load(DataBroker.class).orElseThrow();
+ assertThat(service, instanceOf(BindingDOMDataBrokerAdapter.class));
+ return (BindingDOMDataBrokerAdapter) service;
}
}
\ No newline at end of file