package com.after_sunrise.oss.otdb.je.service; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.IOException; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import com.after_sunrise.oss.otdb.api.service.TickIterator; import com.after_sunrise.oss.otdb.api.tick.Tick; import com.after_sunrise.oss.otdb.je.database.CodeDatabase; import com.after_sunrise.oss.otdb.je.database.TickDatabase; import com.after_sunrise.oss.otdb.je.database.TickDatabaseIterator; import com.after_sunrise.oss.otdb.je.entity.TickEntry; import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; /** * @author takanori.takase */ public class JeTickServiceDelegateTest { private JeTickServiceDelegate target; private Environment environment; private CodeDatabase codeDatabase; private TickDatabase tickDatabase; private Transaction tx; @Before public void setUp() throws Exception { environment = mock(Environment.class); codeDatabase = mock(CodeDatabase.class); tickDatabase = mock(TickDatabase.class); tx = mock(Transaction.class); target = new JeTickServiceDelegate(); target.setEnvironment(environment); target.setCodeDatabase(codeDatabase); target.setTickDatabase(tickDatabase); target.setTx(tx); } @Test public void testInitialize() throws IOException { target.initialize(); verify(codeDatabase).initialize(environment, tx); verify(tickDatabase).initialize(environment, tx); } @Test public void testClose() throws IOException { target.close(); verify(codeDatabase).close(); verify(tickDatabase).close(); } @Test public void testFind() throws IOException { List<TickEntry> entries = Arrays.asList(mock(TickEntry.class)); when(codeDatabase.search(tx, "foo")).thenReturn(1L); when(tickDatabase.find(tx, 1L, 2L, 4L)).thenReturn(entries); List<Tick> ticks = target.find("foo", 2L, 4L); assertEquals(1, ticks.size()); } @Test public void testFind_UnknownCode() throws IOException { List<TickEntry> entries = Arrays.asList(mock(TickEntry.class)); when(codeDatabase.search(tx, "foo")).thenReturn(null); when(tickDatabase.find(tx, 1L, 2L, 4L)).thenReturn(entries); List<Tick> ticks = target.find("foo", 2L, 4L); assertTrue(ticks.isEmpty()); } @Test public void testFind_NoEntries() throws IOException { when(codeDatabase.search(tx, "foo")).thenReturn(1L); when(tickDatabase.find(tx, 1L, 2L, 4L)).thenReturn(null); List<Tick> ticks = target.find("foo", 2L, 4L); assertTrue(ticks.isEmpty()); } @Test public void testIterate() throws IOException { TickDatabaseIterator itr = mock(TickDatabaseIterator.class); when(codeDatabase.search(tx, "foo")).thenReturn(1L); when(tickDatabase.iterator(tx, 1L, 2l, 4L)).thenReturn(itr); TickIterator result = target.iterate("foo", 2L, 4L); result.close(); } @Test public void testIterate_UnknownCode() throws IOException { TickDatabaseIterator itr = mock(TickDatabaseIterator.class); when(codeDatabase.search(tx, "foo")).thenReturn(null); when(tickDatabase.iterator(tx, 1L, 2l, 4L)).thenReturn(itr); TickIterator result = target.iterate("foo", 2L, 4L); result.close(); } @Test public void testIterate_NullIterator() throws IOException { when(codeDatabase.search(tx, "foo")).thenReturn(1L); when(tickDatabase.iterator(tx, 1L, 2l, 4L)).thenReturn(null); TickIterator result = target.iterate("foo", 2L, 4L); result.close(); } }