Skip to content

Commit

Permalink
more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kelindar committed Jul 13, 2021
1 parent cfcfc70 commit fae1562
Showing 1 changed file with 106 additions and 0 deletions.
106 changes: 106 additions & 0 deletions column_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ func TestColumns(t *testing.T) {
t.Run(fmt.Sprintf("%T", tc.column), func(t *testing.T) {
testColumn(t, tc.column, tc.value)
})

t.Run(fmt.Sprintf("%T-cursor", tc.column), func(t *testing.T) {
testColumnCursor(t, tc.column, tc.value)
})
}
}

Expand Down Expand Up @@ -150,6 +154,26 @@ func testColumn(t *testing.T, column Column, value interface{}) {

}

// Tests an individual column cursor
func testColumnCursor(t *testing.T, column Column, value interface{}) {
col := NewCollection()
col.CreateColumn("test", column)
col.Insert(map[string]interface{}{
"test": value,
})

assert.NotPanics(t, func() {
col.Query(func(txn *Txn) error {
return txn.Range("test", func(cur Cursor) {
setAny(&cur, "test", value)
if _, ok := column.(Numeric); ok {
addAny(&cur, "test", value)
}
})
})
})
}

func TestColumnOrder(t *testing.T) {
p := ForUint32()
p.Grow(199)
Expand Down Expand Up @@ -209,3 +233,85 @@ type Update struct {
Index uint32
Value interface{}
}

// setAny used for testing
func setAny(cur *Cursor, column string, value interface{}) {
switch v := value.(type) {
case uint:
cur.SetUint(v)
cur.SetUintAt(column, v)
case uint64:
cur.SetUint64(v)
cur.SetUint64At(column, v)
case uint32:
cur.SetUint32(v)
cur.SetUint32At(column, v)
case uint16:
cur.SetUint16(v)
cur.SetUint16At(column, v)
case int:
cur.SetInt(v)
cur.SetIntAt(column, v)
case int64:
cur.SetInt64(v)
cur.SetInt64At(column, v)
case int32:
cur.SetInt32(v)
cur.SetInt32At(column, v)
case int16:
cur.SetInt16(v)
cur.SetInt16At(column, v)
case float64:
cur.SetFloat64(v)
cur.SetFloat64At(column, v)
case float32:
cur.SetFloat32(v)
cur.SetFloat32At(column, v)
case bool:
cur.SetBool(v)
cur.SetBoolAt(column, v)
case string:
cur.SetString(v)
cur.SetStringAt(column, v)
default:
panic(fmt.Errorf("column: unsupported type (%T)", value))
}
}

// addAny used for testing
func addAny(cur *Cursor, column string, value interface{}) {
switch v := value.(type) {
case uint:
cur.AddUint(v)
cur.AddUintAt(column, v)
case uint64:
cur.AddUint64(v)
cur.AddUint64At(column, v)
case uint32:
cur.AddUint32(v)
cur.AddUint32At(column, v)
case uint16:
cur.AddUint16(v)
cur.AddUint16At(column, v)
case int:
cur.AddInt(v)
cur.AddIntAt(column, v)
case int64:
cur.AddInt64(v)
cur.AddInt64At(column, v)
case int32:
cur.AddInt32(v)
cur.AddInt32At(column, v)
case int16:
cur.AddInt16(v)
cur.AddInt16At(column, v)
case float64:
cur.AddFloat64(v)
cur.AddFloat64At(column, v)
case float32:
cur.AddFloat32(v)
cur.AddFloat32At(column, v)
default:
panic(fmt.Errorf("column: unsupported type (%T)", value))
}
}

0 comments on commit fae1562

Please sign in to comment.