31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
package sync
|
|
|
|
import (
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Percent", func() {
|
|
DescribeTable("calculating percentage",
|
|
func(a, b *int, want string) {
|
|
Expect(percent(a, b)).To(Equal(want))
|
|
},
|
|
Entry("both inputs are nil", nil, nil, "0.00"),
|
|
Entry("a is nil, b is non-zero", nil, intPtr(10), "0.00"),
|
|
Entry("b is nil, a is non-zero", intPtr(10), nil, "0.00"),
|
|
Entry("b is zero", intPtr(10), intPtr(0), "0.00"),
|
|
Entry("normal case with positive int values", intPtr(25), intPtr(100), "25.00"),
|
|
Entry("a and b are equal", intPtr(50), intPtr(50), "100.00"),
|
|
Entry("a is zero, b is positive", intPtr(0), intPtr(50), "0.00"),
|
|
Entry("large positive values", intPtr(1000), intPtr(4000), "25.00"),
|
|
Entry("a greater than b", intPtr(150), intPtr(100), "150.00"),
|
|
Entry("negative values for a and b", intPtr(-25), intPtr(-50), "50.00"),
|
|
Entry("a is positive, b is negative", intPtr(25), intPtr(-50), "-50.00"),
|
|
Entry("a is negative, b is positive", intPtr(-25), intPtr(50), "-50.00"),
|
|
)
|
|
})
|
|
|
|
func intPtr(i int) *int {
|
|
return &i
|
|
}
|