package com.aol.micro.server.async.data.writer; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; import cyclops.async.Future; import org.junit.Before; import org.junit.Test; import com.aol.micro.server.events.SystemData; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; public class AsyncDataWriterTest { AsyncDataWriter<String> writer; Executor ex = Executors.newFixedThreadPool(5); EventBus bus; private DummyManifestComparator<String> dummyMc; AtomicInteger eventRecieved; @Before public void setup() { eventRecieved = new AtomicInteger( 0); bus = new EventBus(); bus.register(this); dummyMc = new DummyManifestComparator<>(); writer = new AsyncDataWriter<>( ex, dummyMc, bus); } @Subscribe public void event(SystemData data) { eventRecieved.incrementAndGet(); } @Test public void testLoadAndGet() { assertThat(eventRecieved.get(), equalTo(0)); dummyMc.setData("hello world"); Future<String> res = writer.loadAndGet(); assertThat(res.get(), equalTo("hello world")); assertThat(dummyMc.loadCalled.get(), equalTo(1)); assertThat(eventRecieved.get(), equalTo(1)); } @Test public void testSaveAndIncrement() { assertThat(eventRecieved.get(), equalTo(0)); writer.saveAndIncrement("boo!"); Future<String> res = writer.loadAndGet(); assertThat(res.get(), equalTo("boo!")); assertThat(eventRecieved.get(), equalTo(2)); } @Test public void testIsOutOfDate() { writer.isOutOfDate() .get(); assertThat(dummyMc.outofDateCalled.get(), equalTo(1)); } }