github.com/vertgenlab/gonomics@v1.0.0/cigar/byteCigar_test.go (about)

     1  package cigar
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  // Current declaration of the cigar struct.
     8  var c1 Cigar = Cigar{RunLength: 35, Op: 'M'}
     9  var c2 Cigar = Cigar{RunLength: 2, Op: 'I'}
    10  var c3 Cigar = Cigar{RunLength: 16, Op: 'D'}
    11  
    12  // Byte Cigar light weight cigar.
    13  var b1 ByteCigar = ByteCigar{RunLen: 35, Op: 'M'}
    14  var b2 ByteCigar = ByteCigar{RunLen: 2, Op: 'I'}
    15  var b3 ByteCigar = ByteCigar{RunLen: 16, Op: 'D'}
    16  
    17  func TestBytesToCigar(t *testing.T) {
    18  	var cigarbytes = []byte("35M2I16D")
    19  	bc := ReadToBytesCigar(cigarbytes)
    20  	if string(ByteCigarToString(bc)) != "35M2I16D" {
    21  		t.Errorf("Error: could not convert %v to cigar...\n", bc)
    22  	}
    23  }
    24  
    25  func TestUint32ToCigar(t *testing.T) {
    26  	var query []uint32 = []uint32{560, 33, 258}
    27  	byteCigs := Uint32ToByteCigar(query)
    28  	if string(ByteCigarToString(byteCigs)) != "35M2I16D" {
    29  		t.Errorf("Error: 35M!=560, 2I!=33, 16D!=258...\n")
    30  	}
    31  }
    32  
    33  func TestToUint32(t *testing.T) {
    34  	var answer []uint32 = []uint32{560, 33, 258}
    35  	byteCigs := []ByteCigar{b1, b2, b3}
    36  	code := ByteCigarToUint32(byteCigs)
    37  	if len(answer) == len(code) {
    38  		if code[0] != answer[0] || code[1] != answer[1] || code[2] != answer[2] {
    39  			t.Errorf("Error: %d!=35M || %d!=2I || %d!=16D\n", code[0], code[1], code[2])
    40  		}
    41  	}
    42  }
    43  func BenchmarkCigarBytesToString(b *testing.B) {
    44  	b.ReportAllocs()
    45  	b.ResetTimer()
    46  	for n := 0; n < b.N; n++ {
    47  		ByteCigarToString([]ByteCigar{b1, b2, b3})
    48  	}
    49  }
    50  
    51  func BenchmarkCigarToString(b *testing.B) {
    52  	b.ReportAllocs()
    53  	b.ResetTimer()
    54  	for n := 0; n < b.N; n++ {
    55  		ToString([]Cigar{c1, c2, c3})
    56  	}
    57  }
    58  
    59  func BenchmarkBytesToCigar(b *testing.B) {
    60  	b.ReportAllocs()
    61  	b.ResetTimer()
    62  	var cigarbytes = []byte("35M2I16D")
    63  	for n := 0; n < b.N; n++ {
    64  		ReadToBytesCigar(cigarbytes)
    65  	}
    66  }
    67  
    68  func BenchmarkStringToCigar(b *testing.B) {
    69  	b.ReportAllocs()
    70  	b.ResetTimer()
    71  	var cigarstring string = "35M2I16D"
    72  	for n := 0; n < b.N; n++ {
    73  		FromString(cigarstring)
    74  	}
    75  }