github.com/openfga/openfga@v1.5.4-rc1/internal/utils/bucket_test.go (about) 1 package utils 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestBucketize(t *testing.T) { 10 t.Parallel() 11 12 tests := []struct { 13 name string 14 input uint 15 buckets []uint 16 expected string 17 }{ 18 { 19 name: "single_bucket_smaller", 20 input: uint(20), 21 buckets: []uint{40}, 22 expected: "40", 23 }, 24 { 25 name: "single_bucket_equal", 26 input: uint(40), 27 buckets: []uint{40}, 28 expected: "40", 29 }, 30 { 31 name: "single_bucket_smaller", 32 input: uint(60), 33 buckets: []uint{40}, 34 expected: ">40", 35 }, 36 { 37 name: "multiple_bucket_smaller", 38 input: uint(20), 39 buckets: []uint{40, 60}, 40 expected: "40", 41 }, 42 { 43 name: "multiple_bucket_equal", 44 input: uint(40), 45 buckets: []uint{40, 60}, 46 expected: "40", 47 }, 48 { 49 name: "multiple_bucket_between", 50 input: uint(50), 51 buckets: []uint{40, 60}, 52 expected: "60", 53 }, 54 { 55 name: "multiple_bucket_larger", 56 input: uint(61), 57 buckets: []uint{40, 60}, 58 expected: ">60", 59 }, 60 } 61 62 for _, test := range tests { 63 test := test 64 t.Run(test.name, func(t *testing.T) { 65 t.Parallel() 66 67 output := Bucketize(test.input, test.buckets) 68 require.Equal(t, test.expected, output) 69 }) 70 } 71 } 72 73 func TestLinearBuckets(t *testing.T) { 74 buckets := LinearBuckets(1.0, 100, 10) 75 require.Equal(t, []float64{1, 12, 23, 34, 45, 56, 67, 78, 89, 100}, buckets) 76 }