gitea源码

option_test.go 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package optional_test
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/modules/optional"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestOption(t *testing.T) {
  10. var uninitialized optional.Option[int]
  11. assert.False(t, uninitialized.Has())
  12. assert.Equal(t, int(0), uninitialized.Value())
  13. assert.Equal(t, int(1), uninitialized.ValueOrDefault(1))
  14. none := optional.None[int]()
  15. assert.False(t, none.Has())
  16. assert.Equal(t, int(0), none.Value())
  17. assert.Equal(t, int(1), none.ValueOrDefault(1))
  18. some := optional.Some(1)
  19. assert.True(t, some.Has())
  20. assert.Equal(t, int(1), some.Value())
  21. assert.Equal(t, int(1), some.ValueOrDefault(2))
  22. noneBool := optional.None[bool]()
  23. assert.False(t, noneBool.Has())
  24. assert.False(t, noneBool.Value())
  25. assert.True(t, noneBool.ValueOrDefault(true))
  26. someBool := optional.Some(true)
  27. assert.True(t, someBool.Has())
  28. assert.True(t, someBool.Value())
  29. assert.True(t, someBool.ValueOrDefault(false))
  30. var ptr *int
  31. assert.False(t, optional.FromPtr(ptr).Has())
  32. int1 := 1
  33. opt1 := optional.FromPtr(&int1)
  34. assert.True(t, opt1.Has())
  35. assert.Equal(t, int(1), opt1.Value())
  36. assert.False(t, optional.FromNonDefault("").Has())
  37. opt2 := optional.FromNonDefault("test")
  38. assert.True(t, opt2.Has())
  39. assert.Equal(t, "test", opt2.Value())
  40. assert.False(t, optional.FromNonDefault(0).Has())
  41. opt3 := optional.FromNonDefault(1)
  42. assert.True(t, opt3.Has())
  43. assert.Equal(t, int(1), opt3.Value())
  44. opt4 := optional.FromMapLookup(map[string]int{"a": 1}, "a")
  45. assert.True(t, opt4.Has())
  46. assert.Equal(t, 1, opt4.Value())
  47. opt4 = optional.FromMapLookup(map[string]int{"a": 1}, "b")
  48. assert.False(t, opt4.Has())
  49. }
  50. func Test_ParseBool(t *testing.T) {
  51. assert.Equal(t, optional.None[bool](), optional.ParseBool(""))
  52. assert.Equal(t, optional.None[bool](), optional.ParseBool("x"))
  53. assert.Equal(t, optional.Some(false), optional.ParseBool("0"))
  54. assert.Equal(t, optional.Some(false), optional.ParseBool("f"))
  55. assert.Equal(t, optional.Some(false), optional.ParseBool("False"))
  56. assert.Equal(t, optional.Some(true), optional.ParseBool("1"))
  57. assert.Equal(t, optional.Some(true), optional.ParseBool("t"))
  58. assert.Equal(t, optional.Some(true), optional.ParseBool("True"))
  59. }