Пример #1
0
func TestRead(t *testing.T) {
	assert := assert.New(t)
	ds := datas.NewDataStore(chunks.NewMemoryStore())

	dataString := `a,1,true
b,2,false
`
	r := NewCSVReader(bytes.NewBufferString(dataString), ',')

	headers := []string{"A", "B", "C"}
	kinds := KindSlice{types.StringKind, types.Int8Kind, types.BoolKind}
	l, typeRef, typeDef := Read(r, "test", headers, kinds, ds)

	assert.Equal(uint64(2), l.Len())

	assert.True(typeRef.IsUnresolved())

	desc, ok := typeDef.Desc.(types.StructDesc)
	assert.True(ok)
	assert.Len(desc.Fields, 3)
	assert.Equal("A", desc.Fields[0].Name)
	assert.Equal("B", desc.Fields[1].Name)
	assert.Equal("C", desc.Fields[2].Name)

	assert.True(l.Get(0).(types.Struct).Get("A").Equals(types.NewString("a")))
	assert.True(l.Get(1).(types.Struct).Get("A").Equals(types.NewString("b")))

	assert.True(l.Get(0).(types.Struct).Get("B").Equals(types.Int8(1)))
	assert.True(l.Get(1).(types.Struct).Get("B").Equals(types.Int8(2)))

	assert.True(l.Get(0).(types.Struct).Get("C").Equals(types.Bool(true)))
	assert.True(l.Get(1).(types.Struct).Get("C").Equals(types.Bool(false)))
}
Пример #2
0
func (suite *WalkAllTestSuite) TestWalkComposites() {
	suite.walkWorker(suite.storeAndRef(types.NewList()), 2)
	suite.walkWorker(suite.storeAndRef(types.NewList(types.Bool(false), types.Int32(8))), 4)
	suite.walkWorker(suite.storeAndRef(types.NewSet()), 2)
	suite.walkWorker(suite.storeAndRef(types.NewSet(types.Bool(false), types.Int32(8))), 4)
	suite.walkWorker(suite.storeAndRef(types.NewMap()), 2)
	suite.walkWorker(suite.storeAndRef(types.NewMap(types.Int32(8), types.Bool(true), types.Int32(0), types.Bool(false))), 6)
}
Пример #3
0
func readerForOptionalStruct(v types.Value) []types.Value {
	values := []types.Value{}
	s := v.(OptionalStruct)
	values = append(values, types.Bool(s.__optionals))
	if s.__optionals {
		values = append(values, types.NewString(s._s))
	}
	values = append(values, types.Bool(s.__optionalb))
	if s.__optionalb {
		values = append(values, types.Bool(s._b))
	}
	return values
}
Пример #4
0
func TestReadWriteCache(t *testing.T) {
	assert := assert.New(t)
	cs := chunks.NewTestStore()
	ds := NewDataStore(cs)

	var v types.Value = types.Bool(true)
	assert.NotEqual(ref.Ref{}, ds.WriteValue(v))
	assert.Equal(1, cs.Writes)
	r := ds.WriteValue(v).TargetRef()
	assert.Equal(1, cs.Writes)

	v = ds.ReadValue(r)
	assert.True(v.Equals(types.Bool(true)))
}
Пример #5
0
func (m MapOfBoolToString) MaybeGet(p bool) (string, bool) {
	v, ok := m.m.MaybeGet(types.Bool(p))
	if !ok {
		return "", false
	}
	return v.(types.String).String(), ok
}
Пример #6
0
func (s SetOfBool) fromElemSlice(p []bool) []types.Value {
	r := make([]types.Value, len(p))
	for i, v := range p {
		r[i] = types.Bool(v)
	}
	return r
}
Пример #7
0
func (m MapOfStringToValue) MaybeGet(p string) (types.Value, bool) {
	v, ok := m.m.MaybeGet(types.NewString(p))
	if !ok {
		return types.Bool(false), false
	}
	return v, ok
}
Пример #8
0
func (s StructWithList) ChildValues() (ret []types.Value) {
	ret = append(ret, s._l)
	ret = append(ret, types.Bool(s._b))
	ret = append(ret, types.NewString(s._s))
	ret = append(ret, types.Int64(s._i))
	return
}
Пример #9
0
func (def MapOfBoolToStringDef) New() MapOfBoolToString {
	kv := make([]types.Value, 0, len(def)*2)
	for k, v := range def {
		kv = append(kv, types.Bool(k), types.NewString(v))
	}
	return MapOfBoolToString{types.NewTypedMap(__typeForMapOfBoolToString, kv...), &ref.Ref{}}
}
Пример #10
0
func TestWriteRefToNonexistentValue(t *testing.T) {
	assert := assert.New(t)
	cs := chunks.NewTestStore()
	ds := NewDataStore(cs)

	assert.Panics(func() { ds.WriteValue(types.NewRef(types.Bool(true).Ref())) })
}
Пример #11
0
func readerForS(v types.Value) []types.Value {
	values := []types.Value{}
	s := v.(S)
	values = append(values, types.NewString(s._s))
	values = append(values, types.Bool(s._b))
	return values
}
Пример #12
0
func NewCommit() Commit {
	return Commit{
		_value:   types.Bool(false),
		_parents: NewSetOfRefOfCommit(),

		ref: &ref.Ref{},
	}
}
Пример #13
0
func (s OptionalStruct) ChildValues() (ret []types.Value) {
	if s.__optionals {
		ret = append(ret, types.NewString(s._s))
	}
	if s.__optionalb {
		ret = append(ret, types.Bool(s._b))
	}
	return
}
Пример #14
0
func readerForStructWithList(v types.Value) []types.Value {
	values := []types.Value{}
	s := v.(StructWithList)
	values = append(values, s._l)
	values = append(values, types.Bool(s._b))
	values = append(values, types.NewString(s._s))
	values = append(values, types.Int64(s._i))
	return values
}
Пример #15
0
func (def SetOfBoolDef) New() SetOfBool {
	l := make([]types.Value, len(def))
	i := 0
	for d, _ := range def {
		l[i] = types.Bool(d)
		i++
	}
	return SetOfBool{types.NewTypedSet(__typeForSetOfBool, l...), &ref.Ref{}}
}
Пример #16
0
func TestWriteValueTypeRef(t *testing.T) {
	assert := assert.New(t)
	cs := chunks.NewTestStore()
	ds := NewDataStore(cs)

	b := types.Bool(true)
	assert.NotEqual(ref.Ref{}, ds.WriteValue(b))

	assert.NotPanics(func() { ds.WriteValue(types.NewRef(b.Ref())) })
}
Пример #17
0
func (suite *WalkAllTestSuite) TestWalkNestedComposites() {
	cs := chunks.NewMemoryStore()
	suite.walkWorker(suite.storeAndRef(types.NewList(suite.NewSet(cs), types.Int32(8))), 5)
	suite.walkWorker(suite.storeAndRef(types.NewSet(suite.NewList(cs), suite.NewSet(cs))), 6)
	// {"string": "string",
	//  "list": [false true],
	//  "map": {"nested": "string"}
	//  "mtlist": []
	//  "set": [5 7 8]
	//  []: "wow"
	// }
	nested := types.NewMap(
		types.NewString("string"), types.NewString("string"),
		types.NewString("list"), suite.NewList(cs, types.Bool(false), types.Bool(true)),
		types.NewString("map"), suite.NewMap(cs, types.NewString("nested"), types.NewString("string")),
		types.NewString("mtlist"), suite.NewList(cs),
		types.NewString("set"), suite.NewSet(cs, types.Int32(5), types.Int32(7), types.Int32(8)),
		suite.NewList(cs), types.NewString("wow"), // note that the dupe list chunk is skipped
	)
	suite.walkWorker(suite.storeAndRef(nested), 25)
}
Пример #18
0
// StringToType takes a piece of data as a string and attempts to convert it to a types.Value of the appropriate types.NomsKind.
func StringToType(s string, k types.NomsKind) types.Value {
	switch k {
	case types.Uint8Kind:
		ival, err := strconv.ParseUint(s, 10, 8)
		d.Chk.NoError(err)
		return types.Uint8(ival)
	case types.Uint16Kind:
		ival, err := strconv.ParseUint(s, 10, 16)
		d.Chk.NoError(err)
		return types.Uint16(ival)
	case types.Uint32Kind:
		ival, err := strconv.ParseUint(s, 10, 32)
		d.Chk.NoError(err)
		return types.Uint32(ival)
	case types.Uint64Kind:
		ival, err := strconv.ParseUint(s, 10, 64)
		d.Chk.NoError(err)
		return types.Uint64(ival)
	case types.Int8Kind:
		ival, err := strconv.ParseInt(s, 10, 8)
		d.Chk.NoError(err)
		return types.Int8(ival)
	case types.Int16Kind:
		ival, err := strconv.ParseInt(s, 10, 16)
		d.Chk.NoError(err)
		return types.Int16(ival)
	case types.Int32Kind:
		ival, err := strconv.ParseInt(s, 10, 32)
		d.Chk.NoError(err)
		return types.Int32(ival)
	case types.Int64Kind:
		ival, err := strconv.ParseInt(s, 10, 64)
		d.Chk.NoError(err)
		return types.Int64(ival)
	case types.Float32Kind:
		fval, err := strconv.ParseFloat(s, 32)
		d.Chk.NoError(err)
		return types.Float32(fval)
	case types.Float64Kind:
		fval, err := strconv.ParseFloat(s, 64)
		d.Chk.NoError(err)
		return types.Float64(fval)
	case types.BoolKind:
		bval, err := strconv.ParseBool(s)
		d.Chk.NoError(err)
		return types.Bool(bval)
	case types.StringKind:
		return types.NewString(s)
	default:
		d.Exp.Fail("Invalid column type kind:", k)
	}
	panic("not reached")
}
Пример #19
0
func (suite *LibTestSuite) TestCompositeTypes() {
	// [false true]
	suite.EqualValues(
		types.NewList().Append(types.Bool(false)).Append(types.Bool(true)),
		NomsValueFromDecodedJSON([]interface{}{false, true}))

	// [[false true]]
	suite.EqualValues(
		types.NewList().Append(
			types.NewList().Append(types.Bool(false)).Append(types.Bool(true))),
		NomsValueFromDecodedJSON([]interface{}{[]interface{}{false, true}}))

	// {"string": "string",
	//  "list": [false true],
	//  "map": {"nested": "string"}
	// }
	m := MapOfStringToValueDef{
		"string": types.NewString("string"),
		"list":   types.NewList().Append(types.Bool(false)).Append(types.Bool(true)),
		"map":    MapOfStringToValueDef{"nested": types.NewString("string")}.New(),
	}.New()
	o := NomsValueFromDecodedJSON(map[string]interface{}{
		"string": "string",
		"list":   []interface{}{false, true},
		"map":    map[string]interface{}{"nested": "string"},
	})

	suite.True(m.Equals(o))
}
Пример #20
0
func (s StructPrimitives) ChildValues() (ret []types.Value) {
	ret = append(ret, types.Uint64(s._uint64))
	ret = append(ret, types.Uint32(s._uint32))
	ret = append(ret, types.Uint16(s._uint16))
	ret = append(ret, types.Uint8(s._uint8))
	ret = append(ret, types.Int64(s._int64))
	ret = append(ret, types.Int32(s._int32))
	ret = append(ret, types.Int16(s._int16))
	ret = append(ret, types.Int8(s._int8))
	ret = append(ret, types.Float64(s._float64))
	ret = append(ret, types.Float32(s._float32))
	ret = append(ret, types.Bool(s._bool))
	ret = append(ret, types.NewString(s._string))
	ret = append(ret, s._blob)
	ret = append(ret, s._value)
	return
}
Пример #21
0
func readerForStructPrimitives(v types.Value) []types.Value {
	values := []types.Value{}
	s := v.(StructPrimitives)
	values = append(values, types.Uint64(s._uint64))
	values = append(values, types.Uint32(s._uint32))
	values = append(values, types.Uint16(s._uint16))
	values = append(values, types.Uint8(s._uint8))
	values = append(values, types.Int64(s._int64))
	values = append(values, types.Int32(s._int32))
	values = append(values, types.Int16(s._int16))
	values = append(values, types.Int8(s._int8))
	values = append(values, types.Float64(s._float64))
	values = append(values, types.Float32(s._float32))
	values = append(values, types.Bool(s._bool))
	values = append(values, types.NewString(s._string))
	values = append(values, s._blob)
	values = append(values, s._value)
	return values
}
Пример #22
0
func NewStructPrimitives() StructPrimitives {
	return StructPrimitives{
		_uint64:  uint64(0),
		_uint32:  uint32(0),
		_uint16:  uint16(0),
		_uint8:   uint8(0),
		_int64:   int64(0),
		_int32:   int32(0),
		_int16:   int16(0),
		_int8:    int8(0),
		_float64: float64(0),
		_float32: float32(0),
		_bool:    false,
		_string:  "",
		_blob:    types.NewEmptyBlob(),
		_value:   types.Bool(false),

		ref: &ref.Ref{},
	}
}
Пример #23
0
func (m MapOfBoolToString) Set(k bool, v string) MapOfBoolToString {
	return MapOfBoolToString{m.m.Set(types.Bool(k), types.NewString(v)), &ref.Ref{}}
}
Пример #24
0
func (m MapOfBoolToString) Has(p bool) bool {
	return m.m.Has(types.Bool(p))
}
Пример #25
0
func (m MapOfBoolToString) Remove(p bool) MapOfBoolToString {
	return MapOfBoolToString{m.m.Remove(types.Bool(p)), &ref.Ref{}}
}
Пример #26
0
func (suite *LibTestSuite) TestPrimitiveTypes() {
	suite.EqualValues(types.NewString("expected"), NomsValueFromDecodedJSON("expected"))
	suite.EqualValues(types.Bool(false), NomsValueFromDecodedJSON(false))
	suite.EqualValues(types.Float64(1.7), NomsValueFromDecodedJSON(1.7))
	suite.False(NomsValueFromDecodedJSON(1.7).Equals(types.Bool(true)))
}
Пример #27
0
func (m MapOfBoolToString) Get(p bool) string {
	return m.m.Get(types.Bool(p)).(types.String).String()
}
Пример #28
0
func (s S) ChildValues() (ret []types.Value) {
	ret = append(ret, types.NewString(s._s))
	ret = append(ret, types.Bool(s._b))
	return
}
Пример #29
0
func (s SetOfBool) Has(p bool) bool {
	return s.s.Has(types.Bool(p))
}
Пример #30
0
func TestValidateRef(t *testing.T) {
	ds := createTestDataset("test")
	r := ds.Store().WriteValue(types.Bool(true)).TargetRef()

	assert.Panics(t, func() { ds.validateRefAsCommit(r) })
}