package com.codecademy.eventhub.model; import com.google.common.collect.Maps; import com.codecademy.eventhub.base.KeyValueCallback; import org.junit.Assert; import org.junit.Test; public class EventTest { @Test public void testAll() throws Exception { String eventType = "eventType1"; String externalUserId = "foo"; String date = "20131101"; Event event = new Event.Builder( eventType, externalUserId, date, Maps.<String, String>newHashMap()) .add("key1", "value1") .add("key3", "value3") .add("key2", "value2") .build(); Assert.assertEquals("eventType1", event.getEventType()); Assert.assertEquals("foo", event.getExternalUserId()); Assert.assertEquals("20131101", event.getDate()); Assert.assertEquals("value1", event.get("key1")); Assert.assertEquals("value2", event.get("key2")); Assert.assertEquals("value3", event.get("key3")); Assert.assertNull(event.get("key_not_exists")); event = Event.fromByteBuffer(event.toByteBuffer()); Assert.assertEquals("eventType1", event.getEventType()); Assert.assertEquals("foo", event.getExternalUserId()); Assert.assertEquals("20131101", event.getDate()); Assert.assertEquals("value1", event.get("key1")); Assert.assertEquals("value2", event.get("key2")); Assert.assertEquals("value3", event.get("key3")); Assert.assertNull(event.get("key_not_exists")); MyCallback callback = new MyCallback( new String[] { "date", "event_type", "external_user_id", "key1", "key2", "key3" }, new String[] { "20131101", "eventType1", "foo", "value1", "value2", "value3" }); event.enumerate(callback); callback.verify(6); } private static class MyCallback implements KeyValueCallback { private final String[] expectedKeys; private final String[] expectedValues; private int counter; private MyCallback(String[] expectedKeys, String[] expectedValues) { this.expectedKeys = expectedKeys; this.expectedValues = expectedValues; this.counter = 0; } @Override public void callback(String key, String value) { Assert.assertEquals(expectedKeys[counter], key); Assert.assertEquals(expectedValues[counter], value); counter++; } public void verify(int expectedCount) { Assert.assertEquals(expectedCount, counter); } } }