package qa.qcri.aidr.collector.collectors;
import static org.junit.Assert.assertEquals;
import java.lang.reflect.Field;
import org.junit.Before;
import org.junit.Test;
import qa.qcri.aidr.collector.beans.CollectionTask;
import qa.qcri.aidr.collector.beans.TwitterCollectionTask;
import twitter4j.FilterQuery;
public class TwitterStreamTrackerTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testTask2Query() throws Exception {
TwitterCollectionTask t1 = new TwitterCollectionTask();
FilterQuery q1 = TwitterStreamTracker.task2query(t1);
assertEquals(new FilterQuery(), q1);
TwitterCollectionTask t2 = new TwitterCollectionTask();
t2.setToTrack("earthquake");
FilterQuery q2 = TwitterStreamTracker.task2query(t2);
FilterQuery e2 = new FilterQuery();
e2.track(new String[]{"earthquake"});
assertEquals(e2, q2);
TwitterCollectionTask t3 = new TwitterCollectionTask();
t3.setToFollow("12345");
FilterQuery q3 = TwitterStreamTracker.task2query(t3);
FilterQuery e3 = new FilterQuery();
e3.follow(new long[]{12345L});
assertEquals(e3, q3);
TwitterCollectionTask t4 = new TwitterCollectionTask();
t4.setGeoLocation("-122.75,36.8,-121.75,37.8,-74,40,-73,41");
FilterQuery q4 = TwitterStreamTracker.task2query(t4);
Field f = FilterQuery.class.getDeclaredField("locations");
f.setAccessible(true);
double[][] actual = (double[][]) f.get(q4);
assertEquals(4, actual.length);
for (double[] point : actual)
assertEquals(2, point.length);
assertEquals(-122.75, actual[0][0], 0.0001);
assertEquals( 36.8, actual[0][1], 0.0001);
assertEquals(-121.75, actual[1][0], 0.0001);
assertEquals( 37.8, actual[1][1], 0.0001);
assertEquals( -74, actual[2][0], 0.0001);
assertEquals( 40, actual[2][1], 0.0001);
assertEquals( -73, actual[3][0], 0.0001);
assertEquals( 41, actual[3][1], 0.0001);
TwitterCollectionTask t5 = new TwitterCollectionTask();
t5.setLanguageFilter("en,fr");
FilterQuery q5 = TwitterStreamTracker.task2query(t5);
FilterQuery e5 = new FilterQuery();
e5.language(new String[]{"en", "fr"});
assertEquals(e5, q5);
}
}