github.com/mpraski/clusters@v0.0.0-20171016094157-18104487c312/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  			[]float64{0.1, 0.2, 0.3},
    33  			[]float64{0.4, 0.5, 0.6},
    34  			[]float64{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.Error("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  }