/* * 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.groupbasedpolicy.sxp.ep.provider.impl.dao; import com.google.common.base.Optional; import com.google.common.collect.Iterables; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; /** * Test for {@link SimpleCachedDaoImpl}. */ public class SimpleCachedDaoImplTest { private static final String KEY_1 = "dummyKey1"; private static final String KEY_2 = "dummyKey2"; private static final DummyDataObject DUMMY_DATA_1 = new DummyDataObject("dummyData1"); private static final DummyDataObject DUMMY_DATA_2 = new DummyDataObject("dummyData2"); private SimpleCachedDaoImpl<String, DummyDataObject> dao; @Before public void setUp() throws Exception { dao = new SimpleCachedDaoImpl<>(); Assert.assertFalse(dao.find(KEY_1).isPresent()); } @Test public void testUpdate() throws Exception { dao.update(KEY_1, DUMMY_DATA_1); final Optional<DummyDataObject> dataOpt = dao.find(KEY_1); Assert.assertTrue(dataOpt.isPresent()); Assert.assertEquals(DUMMY_DATA_1.getDummyData(), dataOpt.get().getDummyData()); } @Test public void testInvalidateCache() throws Exception { dao.update(KEY_1, DUMMY_DATA_1); Assert.assertTrue(dao.find(KEY_1).isPresent()); dao.invalidateCache(); Assert.assertFalse(dao.find(KEY_1).isPresent()); } @Test public void testIsEmpty() throws Exception { Assert.assertTrue(dao.isEmpty()); dao.update(KEY_1, DUMMY_DATA_1); Assert.assertFalse(dao.isEmpty()); } @Test public void testValues() throws Exception { Assert.assertEquals(0, Iterables.size(dao.values())); dao.update(KEY_1, DUMMY_DATA_1); dao.update(KEY_1, DUMMY_DATA_2); Assert.assertEquals(1, Iterables.size(dao.values())); dao.update(KEY_2, DUMMY_DATA_2); Assert.assertEquals(2, Iterables.size(dao.values())); } private static final class DummyDataObject implements DataObject { private final String dummyData; public DummyDataObject(final String dummyData) { this.dummyData = dummyData; } public String getDummyData() { return dummyData; } @Override public Class<? extends DataContainer> getImplementedInterface() { return getClass(); } } }