package org.numenta.nupic.examples.cortical_io.breakingnews;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
import org.junit.Test;
import org.numenta.nupic.Parameters;
import org.numenta.nupic.Parameters.KEY;
import org.numenta.nupic.network.Network;
import io.cortical.retina.model.Metric;
import io.cortical.twitter.Algorithm;
import io.cortical.twitter.Tweet;
public class BreakingNewsDemoTest {
int count = 0;
@Test
public void testRunAlgorithm() {
count = 0;
List<String> strings = new ArrayList<>();
strings.add("{'text': \"text 1\", 'created_at': 'Fri Feb 01 12:04:03 2013'}");
strings.add("{'text': \"text 2\", 'created_at': 'Fri Feb 01 12:05:03 2013'}");
Stream<String> stream = strings.stream();
Algorithm algo = getAlgorithm(t -> {
++count;
if(count == 1) {
assertNotNull(t.getText());
assertTrue(t.getText().equals("text 1"));
assertNotNull(t.getDateTime());
assertTrue(t.getDateTime().getHourOfDay() == 12);
}else{
assertNotNull(t.getText());
assertTrue(t.getText().equals("text 2"));
assertNotNull(t.getDateTime());
assertTrue(t.getDateTime().getHourOfDay() == 12);
}
});
BreakingNewsDemo demo = new BreakingNewsDemo();
demo.runAlgorithm(algo, stream);
assertNotNull(algo);
assertEquals(2, count);
}
@Test
public void testGetParameters() {
BreakingNewsDemo demo = new BreakingNewsDemo();
Parameters p = demo.getHTMParameters();
assertNotNull(p);
assertTrue(Arrays.equals(new int[] { 16384 }, (int[])p.get(KEY.COLUMN_DIMENSIONS)));
}
@Test
public void testCreateDataStream() {
BreakingNewsDemo demo = new BreakingNewsDemo();
Stream<String> stream = demo.createDataStream();
assertNotNull(stream);
}
private Algorithm getAlgorithm(Consumer<Tweet> c) {
return new Algorithm() {
@Override
public void compute(Tweet arg0) {
c.accept(arg0);
}
@Override public double getAnomaly() { return 0; }
@Override public Tweet getCurrentTweet() { return null; }
@Override public int[] getPrediction() { return null; }
@Override public double getPrevAnomaly() { return 0; }
@Override public int[] getPrevPrediction() { return null; }
@Override public List<Tweet> getProcessedTweets() { return null; }
@Override public Metric getSimilarities() { return null; }
@Override public List<Tweet> getSimilarityHistory() { return null; }
@Override public void listenToNetwork(Network arg0) {}
};
}
}