storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/pkg/s3select/internal/parquet-go/encoding/rle-encode_test.go (about) 1 /* 2 * Minio Cloud Storage, (C) 2019 Minio, Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package encoding 18 19 import ( 20 "reflect" 21 "testing" 22 23 "storj.io/minio/pkg/s3select/internal/parquet-go/gen-go/parquet" 24 ) 25 26 func TestRLEEncodeInt32s(t *testing.T) { 27 testCases := []struct { 28 values []int32 29 bitWidth int32 30 dataType parquet.Type 31 expectedResult []byte 32 }{ 33 {[]int32{3, 5, 7}, 1, parquet.Type_INT32, []byte{2, 3, 2, 5, 2, 7}}, 34 {[]int32{3, 3, 3}, 1, parquet.Type_INT32, []byte{6, 3}}, 35 {[]int32{2, 2, 3, 3, 3}, 1, parquet.Type_INT32, []byte{4, 2, 6, 3}}, 36 } 37 38 for i, testCase := range testCases { 39 result := rleEncodeInt32s(testCase.values, testCase.bitWidth) 40 if !reflect.DeepEqual(result, testCase.expectedResult) { 41 t.Fatalf("case %v: expected: %v, got: %v", i+1, testCase.expectedResult, result) 42 } 43 } 44 }