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  }