github.com/PJ-Watson/clusters@v0.0.0-20211010154217-d8608bc27e55/csv_importer_test.go (about) 1 package clusters 2 3 import ( 4 "math" 5 "testing" 6 ) 7 8 const TOLERANCE = 0.000001 9 10 func TestImportedLoadDataOfCorrectLengh(t *testing.T) { 11 var ( 12 f = "data/test.csv" 13 i = CsvImporter() 14 s = 3 15 ) 16 17 d, e := i.Import(f, 0, 2) 18 if e != nil { 19 t.Errorf("Error importing data: %s\n", e.Error()) 20 } 21 22 if s != len(d) { 23 t.Errorf("Imported data size mismatch: %d vs %d\n", s, len(d)) 24 } 25 } 26 27 func TestImportedLoadCorrectData(t *testing.T) { 28 var ( 29 f = "data/test.csv" 30 i = CsvImporter() 31 s = [][]float64{ 32 {0.1, 0.2, 0.3}, 33 {0.4, 0.5, 0.6}, 34 {0.7, 0.8, 0.9}, 35 } 36 ) 37 38 d, e := i.Import(f, 0, 2) 39 if e != nil { 40 t.Errorf("Error importing data: %s\n", e.Error()) 41 } 42 43 if !fsliceEqual(d, s) { 44 t.Errorf("Imported data mismatch: %v vs %v\n", d, s) 45 } 46 } 47 48 func fsliceEqual(a, b [][]float64) bool { 49 if len(a) != len(b) { 50 return false 51 } 52 53 for i := 0; i < len(a); i++ { 54 if len(a[i]) != len(b[i]) { 55 return false 56 } 57 58 for j := 0; j < len(a[i]); j++ { 59 if d := math.Abs(a[i][j] - b[i][j]); d > TOLERANCE { 60 return false 61 } 62 } 63 } 64 65 return true 66 } 67 68 func BenchmarkImport(b *testing.B) { 69 var ( 70 f = "data/bus-stops.csv" 71 i = CsvImporter() 72 ) 73 74 b.ResetTimer() 75 76 _, e := i.Import(f, 4, 5) 77 if e != nil { 78 b.Errorf("Error importing data: %s\n", e.Error()) 79 } 80 }