github.com/vertgenlab/gonomics@v1.0.0/fileio/byteio_test.go (about) 1 package fileio 2 3 import ( 4 "testing" 5 ) 6 7 func TestByteioReader(t *testing.T) { 8 answer := ezReaderTest("testdata/big.fa.gz") 9 reader := NewByteReader("testdata/big.fa.gz") 10 var i int = 0 11 for line, done := ReadLine(reader); !done; line, done = ReadLine(reader) { 12 if line.String() != answer[i] { 13 t.Errorf("Error: line did not match easy reader...\n") 14 } 15 i++ 16 } 17 } 18 19 func TestLineExceedsDefaultBufferSize(t *testing.T) { 20 answer := ezReaderTest("testdata/lineExceedsBufferSize.txt") 21 reader := NewByteReader("testdata/lineExceedsBufferSize.txt") 22 var i int = 0 23 for line, done := ReadLine(reader); !done; line, done = ReadLine(reader) { 24 if line.String() == answer[i] { 25 i++ 26 } else { 27 t.Errorf("Error: byteio reader did not process bytes into buffer beyond the default buffer size %s != %s ...\n", line.String(), answer[i]) 28 } 29 } 30 } 31 32 func BenchmarkByteioReader(b *testing.B) { 33 b.ReportAllocs() 34 b.ResetTimer() 35 for n := 0; n < b.N; n++ { 36 reader := NewByteReader("testdata/big.fa") 37 for _, done := ReadLine(reader); !done; _, done = ReadLine(reader) { 38 //Nothing to assign, testing pure reading of the file 39 } 40 } 41 } 42 43 func BenchmarkByteioReaderGz(b *testing.B) { 44 b.ReportAllocs() 45 b.ResetTimer() 46 for n := 0; n < b.N; n++ { 47 reader := NewByteReader("testdata/big.fa.gz") 48 for _, done := ReadLine(reader); !done; _, done = ReadLine(reader) { 49 //Nothing to assign, testing pure reading of the file 50 } 51 } 52 } 53 54 func BenchmarkEasyReaderReg(b *testing.B) { 55 b.ReportAllocs() 56 b.ResetTimer() 57 for n := 0; n < b.N; n++ { 58 var reader *EasyReader 59 var done bool 60 reader = EasyOpen("testdata/big.fa") 61 for _, done = EasyNextLine(reader); !done; _, done = EasyNextLine(reader) { 62 } 63 } 64 } 65 66 func BenchmarkEasyReaderGz(b *testing.B) { 67 b.ReportAllocs() 68 b.ResetTimer() 69 for n := 0; n < b.N; n++ { 70 var reader *EasyReader 71 var done bool 72 reader = EasyOpen("testdata/big.fa.gz") 73 for _, done = EasyNextLine(reader); !done; _, done = EasyNextLine(reader) { 74 } 75 } 76 } 77 78 func ezReaderTest(filename string) []string { 79 var answer []string 80 er := EasyOpen(filename) 81 for line, done := EasyNextLine(er); !done; line, done = EasyNextLine(er) { 82 answer = append(answer, line) 83 } 84 return answer 85 } 86 87 func TestStringToIntSlice(t *testing.T) { 88 data := "0,1,2,3,4,5,6,7,8,9," 89 expected := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 90 answer := StringToIntSlice(data) 91 if len(answer) != 10 { 92 t.Errorf("Error: problem converting string to int slice") 93 } 94 for i := range answer { 95 if answer[i] != expected[i] { 96 t.Errorf("Error: problem converting string to int slice, %d != %d...\n", answer[i], expected[i]) 97 } 98 } 99 } 100 101 func TestIntSliceToString(t *testing.T) { 102 expected := "0,1,2,3,4,5,6,7,8,9," 103 data := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 104 answer := IntSliceToString(data) 105 if answer != expected { 106 t.Errorf("Error: problem converting int slice to string") 107 } 108 }