You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							85 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							85 lines
						
					
					
						
							1.8 KiB
						
					
					
				| 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) | |
| }
 |