maybe_test.go 824 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package ctn
  2. import (
  3. "testing"
  4. "reflect"
  5. )
  6. func TestMaybe(t *testing.T) {
  7. var a_opt = Just[int](1)
  8. var b_opt = Nothing[string]()
  9. if a, some := a_opt.Value(); some {
  10. if a != 1 {
  11. t.Fatalf("wrong value")
  12. }
  13. } else {
  14. t.Fatalf("wrong behavior")
  15. }
  16. if _, some := b_opt.Value(); some {
  17. t.Fatalf("wrong behavior")
  18. }
  19. if ar, some := ReflectMaybeValue(reflect.ValueOf(a_opt)); some {
  20. var a = ar.Interface().(int)
  21. if a != 1 {
  22. t.Fatalf("wrong reflect value")
  23. }
  24. } else {
  25. t.Fatalf("wrong reflect behavior")
  26. }
  27. if _, some := ReflectMaybeValue(reflect.ValueOf(b_opt)); some {
  28. t.Fatalf("wrong reflect behavior")
  29. }
  30. { var u = reflect.TypeOf(struct { a int } { a: 1 })
  31. var v, ok = ReflectTypeMatchMaybe(ReflectTypeMaybe(u))
  32. if !(ok) || u != v {
  33. t.Fatalf("reflect type operations inconsistent")
  34. } }
  35. }