You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

accept_test.go 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package irc
  2. import (
  3. "testing"
  4. )
  5. func TestAccept(t *testing.T) {
  6. var am AcceptManager
  7. am.Initialize()
  8. alice := new(Client)
  9. bob := new(Client)
  10. eve := new(Client)
  11. // must not panic:
  12. am.Unaccept(eve, bob)
  13. assertEqual(am.MaySendTo(alice, bob), false)
  14. assertEqual(am.MaySendTo(bob, alice), false)
  15. assertEqual(am.MaySendTo(alice, eve), false)
  16. assertEqual(am.MaySendTo(eve, alice), false)
  17. assertEqual(am.MaySendTo(bob, eve), false)
  18. assertEqual(am.MaySendTo(eve, bob), false)
  19. am.Accept(alice, bob)
  20. assertEqual(am.MaySendTo(alice, bob), false)
  21. assertEqual(am.MaySendTo(bob, alice), true)
  22. assertEqual(am.MaySendTo(alice, eve), false)
  23. assertEqual(am.MaySendTo(eve, alice), false)
  24. assertEqual(am.MaySendTo(bob, eve), false)
  25. assertEqual(am.MaySendTo(eve, bob), false)
  26. am.Accept(bob, alice)
  27. assertEqual(am.MaySendTo(alice, bob), true)
  28. assertEqual(am.MaySendTo(bob, alice), true)
  29. assertEqual(am.MaySendTo(alice, eve), false)
  30. assertEqual(am.MaySendTo(eve, alice), false)
  31. assertEqual(am.MaySendTo(bob, eve), false)
  32. assertEqual(am.MaySendTo(eve, bob), false)
  33. am.Accept(bob, eve)
  34. assertEqual(am.MaySendTo(alice, bob), true)
  35. assertEqual(am.MaySendTo(bob, alice), true)
  36. assertEqual(am.MaySendTo(alice, eve), false)
  37. assertEqual(am.MaySendTo(eve, alice), false)
  38. assertEqual(am.MaySendTo(bob, eve), false)
  39. assertEqual(am.MaySendTo(eve, bob), true)
  40. am.Accept(eve, bob)
  41. assertEqual(am.MaySendTo(alice, bob), true)
  42. assertEqual(am.MaySendTo(bob, alice), true)
  43. assertEqual(am.MaySendTo(alice, eve), false)
  44. assertEqual(am.MaySendTo(eve, alice), false)
  45. assertEqual(am.MaySendTo(bob, eve), true)
  46. assertEqual(am.MaySendTo(eve, bob), true)
  47. am.Unaccept(eve, bob)
  48. assertEqual(am.MaySendTo(alice, bob), true)
  49. assertEqual(am.MaySendTo(bob, alice), true)
  50. assertEqual(am.MaySendTo(alice, eve), false)
  51. assertEqual(am.MaySendTo(eve, alice), false)
  52. assertEqual(am.MaySendTo(bob, eve), false)
  53. assertEqual(am.MaySendTo(eve, bob), true)
  54. am.Remove(alice)
  55. assertEqual(am.MaySendTo(alice, bob), false)
  56. assertEqual(am.MaySendTo(bob, alice), false)
  57. assertEqual(am.MaySendTo(alice, eve), false)
  58. assertEqual(am.MaySendTo(eve, alice), false)
  59. assertEqual(am.MaySendTo(bob, eve), false)
  60. assertEqual(am.MaySendTo(eve, bob), true)
  61. am.Remove(bob)
  62. assertEqual(am.MaySendTo(alice, bob), false)
  63. assertEqual(am.MaySendTo(bob, alice), false)
  64. assertEqual(am.MaySendTo(alice, eve), false)
  65. assertEqual(am.MaySendTo(eve, alice), false)
  66. assertEqual(am.MaySendTo(bob, eve), false)
  67. assertEqual(am.MaySendTo(eve, bob), false)
  68. }
  69. func TestAcceptInternal(t *testing.T) {
  70. var am AcceptManager
  71. am.Initialize()
  72. alice := new(Client)
  73. bob := new(Client)
  74. eve := new(Client)
  75. am.Accept(alice, bob)
  76. am.Accept(bob, alice)
  77. am.Accept(bob, eve)
  78. am.Remove(alice)
  79. am.Remove(bob)
  80. // assert that there is no memory leak
  81. for _, client := range []*Client{alice, bob, eve} {
  82. assertEqual(len(am.clientToAccepted[client]), 0)
  83. assertEqual(len(am.clientToAccepters[client]), 0)
  84. }
  85. }