File: bcols_test.go

package info (click to toggle)
golang-github-kshedden-dstream 0.0~git20190512.c4c4106-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 596 kB
  • sloc: makefile: 30
file content (112 lines) | stat: -rw-r--r-- 2,046 bytes parent folder | download
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package dstream

import (
	"math"
	"testing"
)

func TestBcols1(t *testing.T) {

	da := NewBCols("testdata/bcols1", 5).Done()

	for rep := 0; rep < 2; rep++ {
		var m, ii int
		for da.Next() {
			for j := 0; j < da.NumVar(); j++ {

				// Get the column by position and by name
				a := da.GetPos(j)
				b := da.Get(da.Names()[j])

				for _, v := range []interface{}{a, b} {
					switch v := v.(type) {
					case []uint8:
						m = len(v)
						for i, x := range v {
							if x != uint8((ii+i)*(ii+i)) {
								t.Fail()
							}
						}
					case []uint16:
						m = len(v)
						for i, x := range v {
							if x != uint16((ii+i)*(ii+i)) {
								t.Fail()
							}
						}
					case []uint32:
						m = len(v)
						for i, x := range v {
							if x != uint32((ii+i)*(ii+i)) {
								t.Fail()
							}
						}
					case []uint64:
						m = len(v)
						for i, x := range v {
							if x != uint64((ii+i)*(ii+i)) {
								t.Fail()
							}
						}
					case []float64:
						m = len(v)
						for i, x := range v {
							d := x - float64((ii+i)*(ii+i))
							if math.Abs(d) > 1e-2 {
								t.Fail()
							}
						}
					}
				}
			}
			ii += m
		}
		da.Reset()
	}

	da.Close()
}

func TestBColsWriter(t *testing.T) {

	x := [][]interface{}{
		{
			[]float64{0, 1, 2, 3},
			[]float64{4, 5, 6},
		},
		{
			[]float32{1, 2, 3, 4},
			[]float32{5, 6, 7},
		},
		{
			[]string{"a", "b", "c", "d"},
			[]string{"e", "f", "g"},
		},
	}

	na := []string{"x1", "x2", "x3"}
	da := NewFromArrays(x, na)

	NewBColsWriter(da).Path("testdata/tobcols").Done()
	db := NewBCols("testdata/tobcols", 4).Done()
	if !EqualReport(da, db, true) {
		t.Fail()
	}

	dax := DropCols(da, "x2")
	db = NewBCols("testdata/tobcols", 4).Exclude("x2").Done()
	if !EqualReport(dax, db, true) {
		t.Fail()
	}

	NewBColsWriter(dax).Path("testdata/tobcols").Done()
	db = NewBCols("testdata/tobcols", 4).Done()
	if !EqualReport(dax, db, true) {
		t.Fail()
	}

	db = NewBCols("testdata/tobcols", 4).Include("x1", "x3").Done()
	if !EqualReport(dax, db, true) {
		t.Fail()
	}
}