214 lines
3.9 KiB
Go
214 lines
3.9 KiB
Go
package opt_test
|
|
|
|
import (
|
|
"github.com/reiver/go-opt"
|
|
|
|
"testing"
|
|
)
|
|
|
|
func TestOptional_GetElse_string(t *testing.T) {
|
|
|
|
tests := []struct{
|
|
Optional opt.Optional[string]
|
|
Alternative string
|
|
Expected string
|
|
}{
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "alternative",
|
|
Expected: "alternative",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "",
|
|
Expected: "",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "apple",
|
|
Expected: "apple",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "banana",
|
|
Expected: "banana",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "cherry",
|
|
Expected: "cherry",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "ONCE TWICE THRICE FOURCE",
|
|
Expected: "ONCE TWICE THRICE FOURCE",
|
|
},
|
|
{
|
|
Optional: opt.Nothing[string](),
|
|
Alternative: "😈",
|
|
Expected: "😈",
|
|
},
|
|
|
|
|
|
|
|
{
|
|
Optional: opt.Something("ONCE TWICE THRICE FOURCE"),
|
|
Alternative: "😈",
|
|
Expected: "ONCE TWICE THRICE FOURCE",
|
|
},
|
|
|
|
|
|
|
|
{
|
|
Optional: opt.Something("۰۱۲۳۴۵۶۷۸۹"),
|
|
Alternative: "😈",
|
|
Expected: "۰۱۲۳۴۵۶۷۸۹",
|
|
},
|
|
}
|
|
|
|
for testNumber, test := range tests {
|
|
|
|
actual := test.Optional.GetElse(test.Alternative)
|
|
|
|
{
|
|
expected := test.Expected
|
|
|
|
if expected != actual {
|
|
t.Errorf("For test #%d, the actual value is not what was expected.", testNumber)
|
|
t.Logf("EXPECTED VALUE: %q", expected)
|
|
t.Logf("ACTUAL VALUE: %q", actual)
|
|
t.Logf("OPTIONAL: %#v", test.Optional)
|
|
/////////////////////// CONTINUE
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestOptional_GetElse_int8(t *testing.T) {
|
|
|
|
tests := []struct{
|
|
Optional opt.Optional[int8]
|
|
Alternative int8
|
|
Expected int8
|
|
}{
|
|
{
|
|
Optional: opt.Nothing[int8](),
|
|
Alternative: -2,
|
|
Expected: -2,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[int8](),
|
|
Alternative: -1,
|
|
Expected: -1,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[int8](),
|
|
Alternative: 0,
|
|
Expected: 0,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[int8](),
|
|
Alternative: 1,
|
|
Expected: 1,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[int8](),
|
|
Alternative: 2,
|
|
Expected: 2,
|
|
},
|
|
|
|
|
|
|
|
{
|
|
Optional: opt.Something[int8](-127),
|
|
Alternative: 42,
|
|
Expected: -127,
|
|
},
|
|
{
|
|
Optional: opt.Something[int8](0),
|
|
Alternative: 42,
|
|
Expected: 0,
|
|
},
|
|
{
|
|
Optional: opt.Something[int8](127),
|
|
Alternative: 42,
|
|
Expected: 127,
|
|
},
|
|
}
|
|
|
|
for testNumber, test := range tests {
|
|
|
|
actual := test.Optional.GetElse(test.Alternative)
|
|
|
|
{
|
|
expected := test.Expected
|
|
|
|
if expected != actual {
|
|
t.Errorf("For test #%d, the actual value is not what was expected.", testNumber)
|
|
t.Logf("EXPECTED VALUE: %q", expected)
|
|
t.Logf("ACTUAL VALUE: %q", actual)
|
|
t.Logf("OPTIONAL: %#v", test.Optional)
|
|
/////////////////////// CONTINUE
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestOptional_GetElse_uint8(t *testing.T) {
|
|
|
|
tests := []struct{
|
|
Optional opt.Optional[uint8]
|
|
Alternative uint8
|
|
Expected uint8
|
|
}{
|
|
{
|
|
Optional: opt.Nothing[uint8](),
|
|
Alternative: 0,
|
|
Expected: 0,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[uint8](),
|
|
Alternative: 1,
|
|
Expected: 1,
|
|
},
|
|
{
|
|
Optional: opt.Nothing[uint8](),
|
|
Alternative: 2,
|
|
Expected: 2,
|
|
},
|
|
|
|
|
|
|
|
{
|
|
Optional: opt.Something[uint8](0),
|
|
Alternative: 42,
|
|
Expected: 0,
|
|
},
|
|
{
|
|
Optional: opt.Something[uint8](127),
|
|
Alternative: 42,
|
|
Expected: 127,
|
|
},
|
|
}
|
|
|
|
for testNumber, test := range tests {
|
|
|
|
actual := test.Optional.GetElse(test.Alternative)
|
|
|
|
{
|
|
expected := test.Expected
|
|
|
|
if expected != actual {
|
|
t.Errorf("For test #%d, the actual value is not what was expected.", testNumber)
|
|
t.Logf("EXPECTED VALUE: %q", expected)
|
|
t.Logf("ACTUAL VALUE: %q", actual)
|
|
t.Logf("OPTIONAL: %#v", test.Optional)
|
|
/////////////////////// CONTINUE
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|