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)
							 | 
						|
								}
							 |