*/
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.Mockito.doReturn;
+import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.mock;
-import com.google.common.collect.ImmutableClassToInstanceMap;
+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.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 AdapterContext mockContext;
private BindingDOMAdapterLoader bindingDOMAdapterLoader;
- private BindingDOMDataBrokerAdapter bindingDOMDataBrokerAdapter;
@Before
public void setUp() {
- doReturn(ImmutableClassToInstanceMap.of()).when(domService).getExtensions();
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() {
- assertTrue(bindingDOMAdapterLoader.load(DataBroker.class).get() instanceof BindingDOMDataBrokerAdapter);
+ assertDataBrokerAdapter();
domService = null;
- assertFalse(bindingDOMAdapterLoader.load(DataBroker.class).isPresent());
+ assertEquals(Optional.empty(), bindingDOMAdapterLoader.load(DataBroker.class));
}
@Test
public void createChainTest() {
- bindingDOMDataBrokerAdapter
- = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
- assertNotNull(bindingDOMDataBrokerAdapter.createTransactionChain(mock(TransactionChainListener.class)));
+ final var adapter = assertDataBrokerAdapter();
+ assertNotNull(adapter.createTransactionChain(mock(TransactionChainListener.class)));
}
- @Test(expected = UnsupportedOperationException.class)
+ @Test
public void registerWithException() {
- bindingDOMDataBrokerAdapter
- = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
- bindingDOMDataBrokerAdapter.registerDataTreeChangeListener(null, null);
+ 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());
+ }
+
+ 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