c66d3667e94588529b3416424cddbd48611df582
[groupbasedpolicy.git] / sxp-mapper / src / test / java / org / opendaylight / groupbasedpolicy / sxp / mapper / impl / dao / SimpleCachedDaoImplTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. 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 package org.opendaylight.groupbasedpolicy.sxp.mapper.impl.dao;
9
10 import com.google.common.base.Optional;
11 import com.google.common.collect.Iterables;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.opendaylight.yangtools.yang.binding.DataContainer;
16 import org.opendaylight.yangtools.yang.binding.DataObject;
17
18 /**
19  * Test for {@link SimpleCachedDaoImpl}.
20  */
21 public class SimpleCachedDaoImplTest {
22
23     private static final String KEY_1 = "dummyKey1";
24     private static final String KEY_2 = "dummyKey2";
25     private static final DummyDataObject DUMMY_DATA_1 = new DummyDataObject("dummyData1");
26     private static final DummyDataObject DUMMY_DATA_2 = new DummyDataObject("dummyData2");
27
28     private SimpleCachedDaoImpl<String, DummyDataObject> dao;
29
30     @Before
31     public void setUp() throws Exception {
32         dao = new SimpleCachedDaoImpl<>();
33         Assert.assertFalse(dao.find(KEY_1).isPresent());
34     }
35
36     @Test
37     public void testUpdate() throws Exception {
38         dao.update(KEY_1, DUMMY_DATA_1);
39         final Optional<DummyDataObject> dataOpt = dao.find(KEY_1);
40         Assert.assertTrue(dataOpt.isPresent());
41         Assert.assertEquals(DUMMY_DATA_1.getDummyData(), dataOpt.get().getDummyData());
42     }
43
44     @Test
45     public void testInvalidateCache() throws Exception {
46         dao.update(KEY_1, DUMMY_DATA_1);
47         Assert.assertTrue(dao.find(KEY_1).isPresent());
48         dao.invalidateCache();
49         Assert.assertFalse(dao.find(KEY_1).isPresent());
50     }
51
52     @Test
53     public void testIsEmpty() throws Exception {
54         Assert.assertTrue(dao.isEmpty());
55         dao.update(KEY_1, DUMMY_DATA_1);
56         Assert.assertFalse(dao.isEmpty());
57     }
58
59     @Test
60     public void testValues() throws Exception {
61         Assert.assertEquals(0, Iterables.size(dao.values()));
62         dao.update(KEY_1, DUMMY_DATA_1);
63         dao.update(KEY_1, DUMMY_DATA_2);
64         Assert.assertEquals(1, Iterables.size(dao.values()));
65
66         dao.update(KEY_2, DUMMY_DATA_2);
67         Assert.assertEquals(2, Iterables.size(dao.values()));
68     }
69
70     private static final class DummyDataObject implements DataObject {
71         private final String dummyData;
72
73         public DummyDataObject(final String dummyData) {
74             this.dummyData = dummyData;
75         }
76
77         public String getDummyData() {
78             return dummyData;
79         }
80
81         @Override
82         public Class<? extends DataContainer> getImplementedInterface() {
83             return getClass();
84         }
85     }
86 }