mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.8 KiB
141 lines
4.8 KiB
package assertions |
|
|
|
import ( |
|
"fmt" |
|
|
|
"github.com/smartystreets/assertions/internal/oglematchers" |
|
) |
|
|
|
// ShouldBeGreaterThan receives exactly two parameters and ensures that the first is greater than the second. |
|
func ShouldBeGreaterThan(actual interface{}, expected ...interface{}) string { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} |
|
|
|
if matchError := oglematchers.GreaterThan(expected[0]).Matches(actual); matchError != nil { |
|
return fmt.Sprintf(shouldHaveBeenGreater, actual, expected[0]) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldBeGreaterThanOrEqualTo receives exactly two parameters and ensures that the first is greater than or equal to the second. |
|
func ShouldBeGreaterThanOrEqualTo(actual interface{}, expected ...interface{}) string { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} else if matchError := oglematchers.GreaterOrEqual(expected[0]).Matches(actual); matchError != nil { |
|
return fmt.Sprintf(shouldHaveBeenGreaterOrEqual, actual, expected[0]) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldBeLessThan receives exactly two parameters and ensures that the first is less than the second. |
|
func ShouldBeLessThan(actual interface{}, expected ...interface{}) string { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} else if matchError := oglematchers.LessThan(expected[0]).Matches(actual); matchError != nil { |
|
return fmt.Sprintf(shouldHaveBeenLess, actual, expected[0]) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldBeLessThan receives exactly two parameters and ensures that the first is less than or equal to the second. |
|
func ShouldBeLessThanOrEqualTo(actual interface{}, expected ...interface{}) string { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} else if matchError := oglematchers.LessOrEqual(expected[0]).Matches(actual); matchError != nil { |
|
return fmt.Sprintf(shouldHaveBeenLess, actual, expected[0]) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldBeBetween receives exactly three parameters: an actual value, a lower bound, and an upper bound. |
|
// It ensures that the actual value is between both bounds (but not equal to either of them). |
|
func ShouldBeBetween(actual interface{}, expected ...interface{}) string { |
|
if fail := need(2, expected); fail != success { |
|
return fail |
|
} |
|
lower, upper, fail := deriveBounds(expected) |
|
|
|
if fail != success { |
|
return fail |
|
} else if !isBetween(actual, lower, upper) { |
|
return fmt.Sprintf(shouldHaveBeenBetween, actual, lower, upper) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldNotBeBetween receives exactly three parameters: an actual value, a lower bound, and an upper bound. |
|
// It ensures that the actual value is NOT between both bounds. |
|
func ShouldNotBeBetween(actual interface{}, expected ...interface{}) string { |
|
if fail := need(2, expected); fail != success { |
|
return fail |
|
} |
|
lower, upper, fail := deriveBounds(expected) |
|
|
|
if fail != success { |
|
return fail |
|
} else if isBetween(actual, lower, upper) { |
|
return fmt.Sprintf(shouldNotHaveBeenBetween, actual, lower, upper) |
|
} |
|
return success |
|
} |
|
func deriveBounds(values []interface{}) (lower interface{}, upper interface{}, fail string) { |
|
lower = values[0] |
|
upper = values[1] |
|
|
|
if ShouldNotEqual(lower, upper) != success { |
|
return nil, nil, fmt.Sprintf(shouldHaveDifferentUpperAndLower, lower) |
|
} else if ShouldBeLessThan(lower, upper) != success { |
|
lower, upper = upper, lower |
|
} |
|
return lower, upper, success |
|
} |
|
func isBetween(value, lower, upper interface{}) bool { |
|
if ShouldBeGreaterThan(value, lower) != success { |
|
return false |
|
} else if ShouldBeLessThan(value, upper) != success { |
|
return false |
|
} |
|
return true |
|
} |
|
|
|
// ShouldBeBetweenOrEqual receives exactly three parameters: an actual value, a lower bound, and an upper bound. |
|
// It ensures that the actual value is between both bounds or equal to one of them. |
|
func ShouldBeBetweenOrEqual(actual interface{}, expected ...interface{}) string { |
|
if fail := need(2, expected); fail != success { |
|
return fail |
|
} |
|
lower, upper, fail := deriveBounds(expected) |
|
|
|
if fail != success { |
|
return fail |
|
} else if !isBetweenOrEqual(actual, lower, upper) { |
|
return fmt.Sprintf(shouldHaveBeenBetweenOrEqual, actual, lower, upper) |
|
} |
|
return success |
|
} |
|
|
|
// ShouldNotBeBetweenOrEqual receives exactly three parameters: an actual value, a lower bound, and an upper bound. |
|
// It ensures that the actual value is nopt between the bounds nor equal to either of them. |
|
func ShouldNotBeBetweenOrEqual(actual interface{}, expected ...interface{}) string { |
|
if fail := need(2, expected); fail != success { |
|
return fail |
|
} |
|
lower, upper, fail := deriveBounds(expected) |
|
|
|
if fail != success { |
|
return fail |
|
} else if isBetweenOrEqual(actual, lower, upper) { |
|
return fmt.Sprintf(shouldNotHaveBeenBetweenOrEqual, actual, lower, upper) |
|
} |
|
return success |
|
} |
|
|
|
func isBetweenOrEqual(value, lower, upper interface{}) bool { |
|
if ShouldBeGreaterThanOrEqualTo(value, lower) != success { |
|
return false |
|
} else if ShouldBeLessThanOrEqualTo(value, upper) != success { |
|
return false |
|
} |
|
return true |
|
}
|
|
|