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  }