882c9c5e7aca07889082696fa6383083fd178770
[mdsal.git] / binding2 / mdsal-binding2-dom-adapter / src / test / java / org / opendaylight / mdsal / binding / javav2 / dom / adapter / impl / data / tree / BindingDOMDataTreeProducerAdapterTest.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.mdsal.binding.javav2.dom.adapter.impl.data.tree;
10
11 import static org.junit.Assert.assertNotNull;
12 import static org.mockito.Matchers.any;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.doThrow;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.reset;
17 import static org.mockito.Mockito.verify;
18 import static org.mockito.MockitoAnnotations.initMocks;
19
20 import com.google.common.collect.ImmutableSet;
21 import com.google.common.util.concurrent.MoreExecutors;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.mockito.Mock;
25 import org.opendaylight.mdsal.binding.javav2.api.DataTreeProducerException;
26 import org.opendaylight.mdsal.binding.javav2.dom.adapter.test.BindingBrokerTestFactory;
27 import org.opendaylight.mdsal.binding.javav2.dom.adapter.test.BindingTestContext;
28 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
29 import org.opendaylight.mdsal.dom.api.DOMDataTreeCursorAwareTransaction;
30 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
31 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException;
32 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
33
34 public class BindingDOMDataTreeProducerAdapterTest {
35
36     private BindingDOMDataTreeProducerAdapter bindingDOMDataTreeProducerAdapter;
37     private BindingToNormalizedNodeCodec codec;
38
39     @Mock
40     private DOMDataTreeProducer delegate;
41
42     @Before
43     public void setUp() throws Exception {
44         initMocks(this);
45         final BindingBrokerTestFactory testFactory = new BindingBrokerTestFactory();
46         testFactory.setExecutor(MoreExecutors.newDirectExecutorService());
47         final BindingTestContext testContext = testFactory.getTestContext();
48         testContext.start();
49         codec = testContext.getCodec();
50         bindingDOMDataTreeProducerAdapter =
51                 (BindingDOMDataTreeProducerAdapter) BindingDOMDataTreeProducerAdapter.create(delegate, codec);
52     }
53
54     @Test
55     public void createTransactionTest() throws Exception {
56         doReturn(mock(DOMDataTreeCursorAwareTransaction.class)).when(delegate).createTransaction(true);
57         assertNotNull(bindingDOMDataTreeProducerAdapter.createTransaction(true));
58         verify(delegate).createTransaction(true);
59     }
60
61     @Test
62     public void createTest() throws Exception {
63         assertNotNull(BindingDOMDataTreeProducerAdapter.create(delegate, codec));
64     }
65
66     @Test
67     public void createProducerTest() throws Exception {
68         doReturn(mock(DOMDataTreeProducer.class)).when(delegate).createProducer(any());
69         assertNotNull(bindingDOMDataTreeProducerAdapter.createProducer(ImmutableSet.of()));
70         verify(delegate).createProducer(any());
71     }
72
73     @Test
74     public void closeTest() throws Exception {
75         reset(delegate);
76         bindingDOMDataTreeProducerAdapter.close();
77         verify(delegate).close();
78     }
79
80     @Test(expected = DataTreeProducerException.class)
81     public void closeTestWithException1() throws Exception {
82         doThrow(new DOMDataTreeProducerBusyException("test")).when(delegate).close();
83         bindingDOMDataTreeProducerAdapter.close();
84     }
85
86     @Test(expected = DataTreeProducerException.class)
87     public void closeTestWithException2() throws Exception {
88         doThrow(new DOMDataTreeProducerException("test")).when(delegate).close();
89         bindingDOMDataTreeProducerAdapter.close();
90     }
91 }