safe_bool_react_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package safe_bool_react
  2. import (
  3. "testing"
  4. . "gitp78su.ipnodns.ru/svi/kern/v2/krn/ktypes"
  5. )
  6. type tester struct {
  7. t *testing.T
  8. sbr ISafeBoolReact
  9. val bool
  10. }
  11. func TestSafeBoolReact(t *testing.T) {
  12. sf := &tester{
  13. t: t,
  14. }
  15. sf.create()
  16. sf.add()
  17. sf.set()
  18. sf.reset()
  19. sf.del()
  20. }
  21. // Удаляет функцию обратного вызова
  22. func (sf *tester) del() {
  23. sf.t.Log("del")
  24. sf.sbr.Delete("test")
  25. sf.val = false
  26. sf.sbr.Set()
  27. if sf.val {
  28. sf.t.Fatalf("del(): val==true")
  29. }
  30. }
  31. // Добавляет функцию обратного вызова
  32. func (sf *tester) add() {
  33. sf.t.Log("add")
  34. sf.sbr.Add("test", sf.fnBack)
  35. }
  36. // Функция обратного вызова для контроля
  37. func (sf *tester) fnBack(val bool) {
  38. sf.val = val
  39. }
  40. // Сбрасывает хранимое значение
  41. func (sf *tester) reset() {
  42. sf.t.Log("reset")
  43. sf.sbr.Reset()
  44. if sf.sbr.Get() {
  45. sf.t.Fatalf("reset(): SafeBool==true")
  46. }
  47. sf.val = true
  48. sf.sbr.Reset()
  49. if sf.sbr.Get() {
  50. sf.t.Fatalf("reset(): SafeBool==true")
  51. }
  52. if sf.val {
  53. sf.t.Fatalf("reset(): val==true")
  54. }
  55. }
  56. // Установка хранимого значения
  57. func (sf *tester) set() {
  58. sf.t.Log("set")
  59. sf.sbr.Set()
  60. if !sf.sbr.Get() {
  61. sf.t.Fatalf("set(): SafeBool==true")
  62. }
  63. sf.sbr.Set()
  64. if !sf.sbr.Get() {
  65. sf.t.Fatalf("set(): SafeBool==true")
  66. }
  67. if !sf.val {
  68. sf.t.Fatalf("set(): val==false")
  69. }
  70. }
  71. // Создаёт потокобезопасный булевый признак
  72. func (sf *tester) create() {
  73. sf.t.Log("create")
  74. sf.sbr = NewSafeBoolReact()
  75. if sf.sbr == nil {
  76. sf.t.Fatalf("create(): SafeBool==nil")
  77. }
  78. if sf.sbr.Get() {
  79. sf.t.Fatalf("create(): SafeBool==true")
  80. }
  81. }