package com.cinchapi.concourse; import java.util.List; import org.junit.Assert; import org.junit.Test; import com.beust.jcommander.internal.Lists; import com.cinchapi.concourse.lang.Criteria; import com.cinchapi.concourse.test.ConcourseIntegrationTest; import com.cinchapi.concourse.thrift.Operator; /** * Tests to check the functionality of average feature. * * @author Raghav Babu */ public class CalculateAverageTest extends ConcourseIntegrationTest { @Test public void testAverageKey() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 64; Number expected = client.calculate().average(key); Assert.assertEquals(expected.intValue(), actual/3); } @Test public void testAverageKeyCcl() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 34; Number expected = client.calculate().average(key, "name = bar"); Assert.assertEquals(expected, actual/2); } @Test public void testAverageKeyCclTime() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 34; Timestamp timestamp = Timestamp.now(); client.add(key, 100, 2); Number expected = client.calculate().average(key, "name = bar", timestamp); Assert.assertEquals(expected, actual/2); } @Test public void testAverageKeyCriteria() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 34; Number expected = client.calculate().average(key, Criteria.where() .key("age").operator(Operator.LESS_THAN).value(20).build()); Assert.assertEquals(expected, actual/2); } @Test public void testAverageKeyCriteriaTime() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 34; Timestamp timestamp = Timestamp.now(); client.add(key, 100, 2); Number expected = client.calculate() .average(key, Criteria.where().key("age") .operator(Operator.LESS_THAN).value(20).build(), timestamp); Assert.assertEquals(expected, actual/2); } @Test(expected = RuntimeException.class) public void testAverageKeyException() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add(key, "fifteen", 1); client.add("name", "bar", 2); client.add(key, 15, 2); client.calculate().average(key); } @Test public void testAverageKeyRecord() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add(key, 19, 1); int actual = 49; Number expected = client.calculate().average(key, 1); Assert.assertEquals(expected, actual/2); } @Test(expected = RuntimeException.class) public void testAverageKeyRecordException() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add(key, "fifteen", 1); client.calculate().average(key, 1); } @Test public void testAverageKeyRecords() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 20, 2); int actual = 50; List<Long> list = Lists.newArrayList(); list.add((long) 1); list.add((long) 2); Number expected = client.calculate().average(key, list); Assert.assertEquals(expected, actual/2); } @Test(expected = RuntimeException.class) public void testAverageKeyRecordsException() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, "fifty", 2); List<Long> list = Lists.newArrayList(); list.add((long) 1); list.add((long) 2); client.calculate().average(key, list); } @Test public void testAverageKeyRecordsTime() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 20, 2); int actual = 50; Timestamp timestamp = Timestamp.now(); client.add(key, 100, 2); Number expected = client.calculate().average(key, Lists.newArrayList(1L, 2L), timestamp); Assert.assertEquals(expected.intValue(), actual/2); } @Test(expected = RuntimeException.class) public void testAverageKeyRecordsTimeException() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, "fifty", 2); Timestamp timestamp = Timestamp.now(); client.add(key, 100, 2); client.calculate().average(key, Lists.newArrayList(1L, 2L), timestamp); } @Test public void testAverageKeyRecordTime() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add(key, 19, 1); int actual = 49; Timestamp timestamp = Timestamp.now(); client.add(key, 100); Number expected = client.calculate().average(key, 1, timestamp); Assert.assertEquals(expected, actual/2); } @Test public void testAverageKeyTime() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add("name", "bar", 2); client.add(key, 19, 2); client.add("name", "bar", 2); client.add(key, 15, 2); int actual = 64; Timestamp timestamp = Timestamp.now(); client.add(key, 100, 2); Number expected = client.calculate().average(key, timestamp); Assert.assertEquals(expected, actual/3); } @Test(expected = RuntimeException.class) public void testAverageKeyTimeException() { String key = "age"; client.add("name", "foo", 1); client.add(key, 30, 1); client.add(key, "fifteen", 1); client.add("name", "bar", 2); client.add(key, 15, 2); client.calculate().average(key, Timestamp.now()); } }