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.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							102 lines
						
					
					
						
							2.3 KiB
						
					
					
				| package schema | |
| 
 | |
| import ( | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/schema_pb" | |
| 	"github.com/stretchr/testify/assert" | |
| 	"testing" | |
| ) | |
| 
 | |
| func TestToParquetLevels(t *testing.T) { | |
| 	type args struct { | |
| 		recordType *schema_pb.RecordType | |
| 	} | |
| 	tests := []struct { | |
| 		name string | |
| 		args args | |
| 		want *ParquetLevels | |
| 	}{ | |
| 		{ | |
| 			name: "nested type", | |
| 			args: args{ | |
| 				RecordTypeBegin(). | |
| 					WithField("ID", TypeInt64). | |
| 					WithField("CreatedAt", TypeInt64). | |
| 					WithRecordField("Person", | |
| 						RecordTypeBegin(). | |
| 							WithField("zName", TypeString). | |
| 							WithField("emails", ListOf(TypeString)). | |
| 							RecordTypeEnd()). | |
| 					WithField("Company", TypeString). | |
| 					WithRecordField("Address", | |
| 						RecordTypeBegin(). | |
| 							WithField("Street", TypeString). | |
| 							WithField("City", TypeString). | |
| 							RecordTypeEnd()). | |
| 					RecordTypeEnd(), | |
| 			}, | |
| 			want: &ParquetLevels{ | |
| 				startColumnIndex: 0, | |
| 				endColumnIndex:   7, | |
| 				definitionDepth:  0, | |
| 				levels: map[string]*ParquetLevels{ | |
| 					"Address": { | |
| 						startColumnIndex: 0, | |
| 						endColumnIndex:   2, | |
| 						definitionDepth:  1, | |
| 						levels: map[string]*ParquetLevels{ | |
| 							"City": { | |
| 								startColumnIndex: 0, | |
| 								endColumnIndex:   1, | |
| 								definitionDepth:  2, | |
| 							}, | |
| 							"Street": { | |
| 								startColumnIndex: 1, | |
| 								endColumnIndex:   2, | |
| 								definitionDepth:  2, | |
| 							}, | |
| 						}, | |
| 					}, | |
| 					"Company": { | |
| 						startColumnIndex: 2, | |
| 						endColumnIndex:   3, | |
| 						definitionDepth:  1, | |
| 					}, | |
| 					"CreatedAt": { | |
| 						startColumnIndex: 3, | |
| 						endColumnIndex:   4, | |
| 						definitionDepth:  1, | |
| 					}, | |
| 					"ID": { | |
| 						startColumnIndex: 4, | |
| 						endColumnIndex:   5, | |
| 						definitionDepth:  1, | |
| 					}, | |
| 					"Person": { | |
| 						startColumnIndex: 5, | |
| 						endColumnIndex:   7, | |
| 						definitionDepth:  1, | |
| 						levels: map[string]*ParquetLevels{ | |
| 							"emails": { | |
| 								startColumnIndex: 5, | |
| 								endColumnIndex:   6, | |
| 								definitionDepth:  2, | |
| 							}, | |
| 							"zName": { | |
| 								startColumnIndex: 6, | |
| 								endColumnIndex:   7, | |
| 								definitionDepth:  2, | |
| 							}, | |
| 						}, | |
| 					}, | |
| 				}, | |
| 			}, | |
| 		}, | |
| 	} | |
| 	for _, tt := range tests { | |
| 		t.Run(tt.name, func(t *testing.T) { | |
| 			got, err := ToParquetLevels(tt.args.recordType) | |
| 			assert.Nil(t, err) | |
| 			assert.Equalf(t, tt.want, got, "ToParquetLevels(%v)", tt.args.recordType) | |
| 		}) | |
| 	} | |
| }
 |