-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils_test.go
63 lines (55 loc) · 1.84 KB
/
utils_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package main
import (
"reflect"
"testing"
)
type SplitLineTest struct {
string_in, newline_char, line_delimiter string
expected []string
}
var SplitLineTests = []SplitLineTest{
{"1\t2\n", "\n", "\t", []string{"1", "2"}},
{"1,2\n", "\n", ",", []string{"1", "2"}},
{"1,2\n\n", "\n", ",", []string{"1", "2"}},
{"1,,3\n\n", "\n", ",", []string{"1", "", "3"}},
{"1\t\t3\n", "\n", "\t", []string{"1", "", "3"}},
{"1\t\t\t3\n", "\n", "\t", []string{"1", "", "", "3"}},
{"1 3\n", "\n", " ", []string{"1", "", "", "3"}}, // double spaces as delimiter
}
func TestSplitLine(t *testing.T) {
for _, test := range SplitLineTests {
if output := SplitLine(test.string_in, test.newline_char, test.line_delimiter); !reflect.DeepEqual(*output, test.expected) {
t.Errorf("Output not equal to expected")
t.Errorf("Output %+v", output)
}
}
}
type LineToProfileTest struct {
input_text []string
missing_value string
expected Profile
}
var LineToProfileTests = []LineToProfileTest{
{
[]string{"profile1", "name2", "name1", "0"}, // outputs for each column should be one as they are in the same columns
"0",
Profile{"profile1", &[]int{1, 1, MissingAlleleValue}},
},
}
func TestLineToProfile(t *testing.T) {
for _, test := range LineToProfileTests {
profiles_len := len(test.input_text) - 1
data_in := make([]int, profiles_len)
lookups := make([]*ProfileLookup, profiles_len)
val := 0
for val < profiles_len {
pLookup := NewProfileLookup()
lookups[val] = pLookup
val += 1
}
if output := LineToProfile(&test.input_text, &data_in, &lookups, &test.missing_value); (*output).name != test.expected.name || !reflect.DeepEqual(*(*output).profile, *test.expected.profile) {
t.Errorf("Output not equal to expected")
t.Errorf("Output %+v expected %+v", (*output).profile, test.expected.profile)
}
}
}