85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
package langext
|
|
|
|
import (
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
|
|
"testing"
|
|
)
|
|
|
|
func TestFormatBoolTrue(t *testing.T) {
|
|
tst.AssertEqual(t, FormatBool(true, "yes", "no"), "yes")
|
|
}
|
|
|
|
func TestFormatBoolFalse(t *testing.T) {
|
|
tst.AssertEqual(t, FormatBool(false, "yes", "no"), "no")
|
|
}
|
|
|
|
func TestConditional(t *testing.T) {
|
|
tst.AssertEqual(t, Conditional(true, 1, 2), 1)
|
|
tst.AssertEqual(t, Conditional(false, 1, 2), 2)
|
|
tst.AssertEqual(t, Conditional(true, "a", "b"), "a")
|
|
tst.AssertEqual(t, Conditional(false, "a", "b"), "b")
|
|
}
|
|
|
|
func TestConditionalFn00(t *testing.T) {
|
|
tst.AssertEqual(t, ConditionalFn00(true, 10, 20), 10)
|
|
tst.AssertEqual(t, ConditionalFn00(false, 10, 20), 20)
|
|
}
|
|
|
|
func TestConditionalFn10Lazy(t *testing.T) {
|
|
called := false
|
|
v := ConditionalFn10(false, func() int {
|
|
called = true
|
|
return 1
|
|
}, 99)
|
|
tst.AssertEqual(t, v, 99)
|
|
tst.AssertEqual(t, called, false)
|
|
|
|
v = ConditionalFn10(true, func() int {
|
|
called = true
|
|
return 1
|
|
}, 99)
|
|
tst.AssertEqual(t, v, 1)
|
|
tst.AssertEqual(t, called, true)
|
|
}
|
|
|
|
func TestConditionalFn01Lazy(t *testing.T) {
|
|
called := false
|
|
v := ConditionalFn01(true, 1, func() int {
|
|
called = true
|
|
return 99
|
|
})
|
|
tst.AssertEqual(t, v, 1)
|
|
tst.AssertEqual(t, called, false)
|
|
|
|
v = ConditionalFn01(false, 1, func() int {
|
|
called = true
|
|
return 99
|
|
})
|
|
tst.AssertEqual(t, v, 99)
|
|
tst.AssertEqual(t, called, true)
|
|
}
|
|
|
|
func TestConditionalFn11Lazy(t *testing.T) {
|
|
calledT := false
|
|
calledF := false
|
|
|
|
v := ConditionalFn11(true,
|
|
func() int { calledT = true; return 1 },
|
|
func() int { calledF = true; return 2 },
|
|
)
|
|
tst.AssertEqual(t, v, 1)
|
|
tst.AssertEqual(t, calledT, true)
|
|
tst.AssertEqual(t, calledF, false)
|
|
|
|
calledT = false
|
|
calledF = false
|
|
|
|
v = ConditionalFn11(false,
|
|
func() int { calledT = true; return 1 },
|
|
func() int { calledF = true; return 2 },
|
|
)
|
|
tst.AssertEqual(t, v, 2)
|
|
tst.AssertEqual(t, calledT, false)
|
|
tst.AssertEqual(t, calledF, true)
|
|
}
|