github.com/pavlo67/common@v0.5.3/common/mathlib/numbers_test.go (about)

     1  package mathlib
     2  
     3  import "testing"
     4  
     5  func TestDivide(t *testing.T) {
     6  	tests := []struct {
     7  		name         string
     8  		total        int
     9  		minPart      float64
    10  		maxPart      float64
    11  		minLastRatio float64
    12  		wantNum      int
    13  		wantPart     int
    14  		wantPartLast int
    15  	}{
    16  		{
    17  			name:         "exact",
    18  			total:        25,
    19  			minPart:      4,
    20  			maxPart:      6,
    21  			minLastRatio: 0.5,
    22  			wantNum:      5,
    23  			wantPart:     5,
    24  			wantPartLast: 5,
    25  		},
    26  		{
    27  			name:         "bigRest",
    28  			total:        26,
    29  			minPart:      4,
    30  			maxPart:      6,
    31  			minLastRatio: 0.6,
    32  			wantNum:      5,
    33  			wantPart:     5,
    34  			wantPartLast: 6,
    35  		},
    36  		{
    37  			name:         "smallRest",
    38  			total:        27,
    39  			minPart:      4,
    40  			maxPart:      6,
    41  			minLastRatio: 0.5,
    42  			wantNum:      5,
    43  			wantPart:     6,
    44  			wantPartLast: 3,
    45  		},
    46  	}
    47  	for _, tt := range tests {
    48  		t.Run(tt.name, func(t *testing.T) {
    49  			gotNum, gotPart, gotPartLast := Divide(tt.total, tt.minPart, tt.maxPart, tt.minLastRatio)
    50  			if gotNum != tt.wantNum {
    51  				t.Errorf("Divide() gotNum = %v, wantDistance %v", gotNum, tt.wantNum)
    52  			}
    53  			if gotPart != tt.wantPart {
    54  				t.Errorf("Divide() gotPart = %v, wantDistance %v", gotPart, tt.wantPart)
    55  			}
    56  			if gotPartLast != tt.wantPartLast {
    57  				t.Errorf("Divide() gotPartLast = %v, wantDistance %v", gotPartLast, tt.wantPartLast)
    58  			}
    59  		})
    60  	}
    61  }