12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package schema
- import (
- "encoding/json"
- "github.com/golang/protobuf/proto"
- . "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb"
- "github.com/stretchr/testify/assert"
- "testing"
- )
- func TestEnumScalarType(t *testing.T) {
- tests := []struct {
- name string
- enum ScalarType
- expected int32
- }{
- {"Boolean", ScalarType_BOOL, 0},
- {"Integer", ScalarType_INT32, 1},
- {"Long", ScalarType_INT64, 3},
- {"Float", ScalarType_FLOAT, 4},
- {"Double", ScalarType_DOUBLE, 5},
- {"Bytes", ScalarType_BYTES, 6},
- {"String", ScalarType_STRING, 7},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.expected, int32(tt.enum))
- })
- }
- }
- func TestField(t *testing.T) {
- field := &Field{
- Name: "field_name",
- Type: &Type{Kind: &Type_ScalarType{ScalarType: ScalarType_INT32}},
- FieldIndex: 1,
- IsRepeated: false,
- }
- assert.NotNil(t, field)
- }
- func TestRecordType(t *testing.T) {
- subRecord := &RecordType{
- Fields: []*Field{
- {
- Name: "field_1",
- Type: &Type{Kind: &Type_ScalarType{ScalarType: ScalarType_INT32}},
- FieldIndex: 1,
- IsRepeated: false,
- },
- {
- Name: "field_2",
- Type: &Type{Kind: &Type_ScalarType{ScalarType: ScalarType_STRING}},
- FieldIndex: 2,
- IsRepeated: false,
- },
- },
- }
- record := &RecordType{
- Fields: []*Field{
- {
- Name: "field_key",
- Type: &Type{Kind: &Type_ScalarType{ScalarType: ScalarType_INT32}},
- FieldIndex: 1,
- IsRepeated: false,
- },
- {
- Name: "field_record",
- Type: &Type{Kind: &Type_RecordType{RecordType: subRecord}},
- FieldIndex: 2,
- IsRepeated: false,
- },
- },
- }
- // serialize record to protobuf text marshalling
- text := proto.MarshalTextString(record)
- println(text)
- bytes, _ := json.Marshal(record)
- println(string(bytes))
- assert.NotNil(t, record)
- }
|