mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-17 16:38:54 +00:00
* JIT mlrval type-interfence: mlrval package * mlrmap refactor * complete merge from #779 * iterating * mlrval/format.go * mlrval/copy.go * bifs/arithmetic_test.go * iterate on bifs/collections_test.go * mlrval_cmp.go * mlrval JSON iterate * iterate applying mlrval refactors to dependent packages * first clean compile in a long while on this branch * results of first post-compile profiling * testing * bugfix in ofmt formatting * bugfix in octal-supporess * go fmt * neaten * regression tests all passing
188 lines
4.3 KiB
Go
188 lines
4.3 KiB
Go
// ================================================================
|
|
// Tests mlrval typed-value extractors
|
|
// ================================================================
|
|
|
|
package mlrval
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGetString(t *testing.T) {
|
|
mv := FromInferredType("234")
|
|
stringval, ok := mv.GetStringValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("234")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("234.5")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("234.5")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("abc")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.Equal(t, "abc", stringval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("abc")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.Equal(t, "abc", stringval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromInferredType("")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.Equal(t, "", stringval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("")
|
|
stringval, ok = mv.GetStringValue()
|
|
assert.Equal(t, "", stringval)
|
|
assert.True(t, ok)
|
|
}
|
|
|
|
func TestGetIntValue(t *testing.T) {
|
|
mv := FromInferredType("123")
|
|
intval, ok := mv.GetIntValue()
|
|
assert.Equal(t, 123, intval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("123")
|
|
intval, ok = mv.GetIntValue()
|
|
assert.Equal(t, 123, intval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromInferredType("123.4")
|
|
intval, ok = mv.GetIntValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("123.4")
|
|
intval, ok = mv.GetIntValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("abc")
|
|
intval, ok = mv.GetIntValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("abc")
|
|
intval, ok = mv.GetIntValue()
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestGetFloatValue(t *testing.T) {
|
|
mv := FromInferredType("234")
|
|
floatval, ok := mv.GetFloatValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("234")
|
|
floatval, ok = mv.GetFloatValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("234.5")
|
|
floatval, ok = mv.GetFloatValue()
|
|
assert.Equal(t, 234.5, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("234.5")
|
|
floatval, ok = mv.GetFloatValue()
|
|
assert.Equal(t, 234.5, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromInferredType("abc")
|
|
floatval, ok = mv.GetFloatValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("abc")
|
|
floatval, ok = mv.GetFloatValue()
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestGetNumericToFloatValue(t *testing.T) {
|
|
mv := FromInferredType("234")
|
|
floatval, ok := mv.GetNumericToFloatValue()
|
|
assert.Equal(t, 234.0, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("234")
|
|
floatval, ok = mv.GetNumericToFloatValue()
|
|
assert.Equal(t, 234.0, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromInferredType("234.5")
|
|
floatval, ok = mv.GetNumericToFloatValue()
|
|
assert.Equal(t, 234.5, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("234.5")
|
|
floatval, ok = mv.GetNumericToFloatValue()
|
|
assert.Equal(t, 234.5, floatval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromInferredType("abc")
|
|
floatval, ok = mv.GetNumericToFloatValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("abc")
|
|
floatval, ok = mv.GetNumericToFloatValue()
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestGetBoolValue(t *testing.T) {
|
|
mv := FromInferredType("234")
|
|
boolval, ok := mv.GetBoolValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("234")
|
|
boolval, ok = mv.GetBoolValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("abc")
|
|
boolval, ok = mv.GetBoolValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromDeferredType("abc")
|
|
boolval, ok = mv.GetBoolValue()
|
|
assert.False(t, ok)
|
|
|
|
mv = FromInferredType("true")
|
|
boolval, ok = mv.GetBoolValue()
|
|
assert.True(t, boolval)
|
|
assert.True(t, ok)
|
|
|
|
mv = FromDeferredType("false")
|
|
boolval, ok = mv.GetBoolValue()
|
|
assert.False(t, ok, "from-data-file \"false\" should infer to string")
|
|
}
|
|
|
|
func TestGetTypeName(t *testing.T) {
|
|
mv := FromInferredType("234")
|
|
assert.Equal(t, "int", mv.GetTypeName())
|
|
|
|
mv = FromDeferredType("234")
|
|
assert.Equal(t, "int", mv.GetTypeName())
|
|
|
|
mv = FromInferredType("234.5")
|
|
assert.Equal(t, "float", mv.GetTypeName())
|
|
|
|
mv = FromDeferredType("234.5")
|
|
assert.Equal(t, "float", mv.GetTypeName())
|
|
|
|
mv = FromInferredType("abc")
|
|
assert.Equal(t, "string", mv.GetTypeName())
|
|
|
|
mv = FromDeferredType("abc")
|
|
assert.Equal(t, "string", mv.GetTypeName())
|
|
|
|
mv = FromInferredType("")
|
|
assert.Equal(t, "empty", mv.GetTypeName())
|
|
|
|
mv = FromDeferredType("")
|
|
assert.Equal(t, "empty", mv.GetTypeName())
|
|
}
|