package voldemort.store.views; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import org.junit.Before; import org.junit.Test; import voldemort.VoldemortTestConstants; import voldemort.client.MockStoreClientFactory; import voldemort.client.StoreClient; public class ViewTransformsTest extends TestCase { private static String storesXml = VoldemortTestConstants.getViewStoreDefinitionXml(); private StoreClient<String, String> upperCaseClient; private StoreClient<Integer, List<Integer>> rangeFilterClient; @Override @Before public void setUp() throws Exception { MockStoreClientFactory factory = new MockStoreClientFactory(null, null, null, null, storesXml); upperCaseClient = factory.getStoreClient("test-view"); rangeFilterClient = factory.getStoreClient("range-view"); Integer[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8 }; Integer[] values2 = { 100, 200, 300, 400, 500, 600, 700 }; rangeFilterClient.put(1, Arrays.asList(values1), null); rangeFilterClient.put(100, Arrays.asList(values2), null); } @Test public void testPutNegative() { try { upperCaseClient.put("test", "test2", "concat"); } catch(UnsupportedViewOperationException ve) {} catch(Exception e) { fail("UnsupportedViewOperationException expected"); } } @Test public void testGet() { assertEquals(8, rangeFilterClient.get(1).getValue().size()); assertEquals(7, rangeFilterClient.get(100).getValue().size()); } @Test public void testGetWithTransforms() { Integer[] filter1 = { 1, 10 }; assertEquals(8, rangeFilterClient.get(1, Arrays.asList(filter1)).getValue().size()); Integer[] filter2 = { 100, 1000 }; assertEquals(7, rangeFilterClient.get(100, Arrays.asList(filter2)).getValue().size()); } @Test public void testPut() { Integer[] values1 = { 9, 90, 10, 15, 25, 106 }; rangeFilterClient.put(1, Arrays.asList(values1)); assertEquals(14, rangeFilterClient.get(1).getValue().size()); } @Test public void testPutWithTransforms() { Integer[] values1 = { 9, 90, 10, 15, 25, 106 }; Integer[] filter1 = { 1, 10 }; rangeFilterClient.put(1, Arrays.asList(values1), Arrays.asList(filter1)); assertEquals(10, rangeFilterClient.get(1, Arrays.asList(filter1)).getValue().size()); Integer[] filter2 = { 5, 10 }; assertEquals(6, rangeFilterClient.get(1, Arrays.asList(filter2)).getValue().size()); Integer[] filter3 = { 1, 50 }; Integer[] values2 = { 90, 15, 25, 106 }; rangeFilterClient.put(1, Arrays.asList(values2), Arrays.asList(filter3)); assertEquals(12, rangeFilterClient.get(1, Arrays.asList(filter3)).getValue().size()); } }