package net.seninp.jmotif.sax.discord;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
/**
* Test the discord records collection implementation.
*
* @author Pavel Senin.
*
*/
public class TestDiscordRecords {
private static final int ds1Pos = 11;
private static final double ds1Dist = 0.11D;
private static final int ds2Pos = 21;
private static final double ds2Dist = 0.21D;
private static final int ds3Pos = 31;
private static final double ds3Dist = 0.31D;
private static final int ds4Pos = 41;
private static final double ds4Dist = 0.41D;
private static final double precision = 0.0001D;
private DiscordRecord discord1, discord2, discord3;
private DiscordRecord discord4;
/**
* Test setup.
*
* @throws Exception if error occurs.
*/
@Before
public void setUp() throws Exception {
discord1 = new DiscordRecord(ds1Pos, ds1Dist);
discord2 = new DiscordRecord(ds2Pos, ds2Dist);
discord3 = new DiscordRecord(ds3Pos, ds3Dist);
discord4 = new DiscordRecord(ds4Pos, ds4Dist);
}
/**
* Test discord records.
*/
@Test
public void testDiscordRecords() {
DiscordRecords ds = new DiscordRecords();
assertTrue("Test constructor", ds.getTopHits(10).isEmpty());
ds.add(discord1);
assertEquals("Test constructor", 1, ds.getTopHits(10).size());
assertSame("Test constructor", discord1, ds.getTopHits(10).get(0));
ds.add(discord2);
assertEquals("Test constructor", 2, ds.getTopHits(10).size());
assertSame("Test constructor", discord1, ds.getTopHits(2).get(1));
// this part reproduces the error found by Sergey & Christian, thank you guys!
// was fixed 30-05-2012
ds.add(discord3);
ds.add(discord4);
assertNotNull("test to string", ds.toString());
List<DiscordRecord> topHits = ds.getTopHits(2);
assertEquals("Test constructor", 2, topHits.size());
assertSame("Test constructor", discord2, topHits.get(0));
}
/**
* Test discord records.
*/
@Test
public void testDiscordRecordsInt() {
DiscordRecords ds = new DiscordRecords();
assertTrue("Test constructor", ds.getTopHits(10).isEmpty());
ds.add(discord1);
assertEquals("Test constructor", 1, ds.getTopHits(10).size());
assertSame("Test constructor", discord1, ds.getTopHits(10).get(0));
ds.add(discord2);
assertEquals("Test constructor", 2, ds.getTopHits(10).size());
assertSame("Test constructor", discord2, ds.getTopHits(10).get(0));
}
/**
* Test the minimal distance calculation routine.
*/
@Test
public void testGetMinDistance() {
DiscordRecords ds = new DiscordRecords();
ds.add(discord1);
ds.add(discord2);
ds.add(discord3);
assertEquals("Test constructor", ds3Dist, ds.getMinDistance(), precision);
}
/**
* Test the toString method.
*/
@Test
public void testToString() {
DiscordRecords ds = new DiscordRecords();
assertEquals(-1D, ds.getMinDistance(), precision);
ds.add(discord1);
ds.add(discord2);
System.out.println(ds.toString());
assertTrue(ds.toString().contains(String.valueOf(ds1Pos)));
}
}