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    }