001 package calhoun.seq.test;
002
003 import calhoun.seq.KmerHasher;
004 import calhoun.util.AbstractTestCase;
005
006 public class KmerHasherTest extends AbstractTestCase {
007 public void testDnaLengthOne() {
008 KmerHasher h = new KmerHasher(KmerHasher.DNA, 1);
009 assertEquals(0, h.hash("a", 0));
010 assertEquals(0, h.hash("a", 0));
011 assertEquals(1, h.hash("C", 0));
012 assertEquals(2, h.hash("G", 0));
013 assertEquals(3, h.hash("T", 0));
014 }
015
016 public void testLetterLengthOne() {
017 KmerHasher h = new KmerHasher(KmerHasher.LETTERS, 1);
018 assertEquals(0, h.hash("a", 0));
019 assertEquals(0, h.hash("A", 0));
020 assertEquals(1, h.hash("b", 0));
021 assertEquals(25, h.hash("Z", 0));
022 }
023
024 public void testDnaLengthTwo() {
025 KmerHasher h = new KmerHasher(KmerHasher.DNA, 2);
026 assertEquals(0, h.hash("aa", 0));
027 assertEquals(1, h.hash("ac", 0));
028 assertEquals(4, h.hash("ca", 0));
029 assertEquals(5, h.hash("cc", 0));
030 assertEquals(15, h.hash("TT", 0));
031 }
032
033 public void testLettersLengthTwo() {
034 KmerHasher h = new KmerHasher(KmerHasher.LETTERS, 2);
035 assertEquals(0, h.hash("aa", 0));
036 assertEquals(1, h.hash("ab", 0));
037 assertEquals(26, h.hash("ba", 0));
038 assertEquals(26*25+1, h.hash("zb", 0));
039 }
040
041 public void testCallTypes() {
042 KmerHasher h = new KmerHasher(KmerHasher.DNA, 4);
043 assertEquals(130, h.hash("gaag", 0));
044 assertEquals(130, h.hash("aagaagaa", 2));
045 assertEquals(130, h.hash(new char[] {'g', 'a', 'a', 'g'}));
046 }
047
048 public void testShift() {
049 KmerHasher h = new KmerHasher(KmerHasher.DNA, 4);
050 // gaag hashes to 130
051 int hash = h.hash("agaa", 0);
052 assertEquals(32, hash);
053 assertEquals(130, h.shiftHash('g', hash));
054 assertEquals(hash, h.reverseShiftHash('a', 130));
055 }
056
057 public void testReverse() {
058 /*KmerHasher h = new KmerHasher(KmerHasher.LETTERS, 4);
059 // gaag hashes to 130
060 int hash = h.hash("bb", 0);
061 assertEquals(27, hash);
062 assertEquals(130, h.shiftHash('g', hash));
063 assertEquals(hash, h.reverseShiftHash('a', 130));*/
064 }
065 }