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.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. assertEqual(am.MaySendTo(alice, bob), false)
  12. assertEqual(am.MaySendTo(bob, alice), false)
  13. assertEqual(am.MaySendTo(alice, eve), false)
  14. assertEqual(am.MaySendTo(eve, alice), false)
  15. assertEqual(am.MaySendTo(bob, eve), false)
  16. assertEqual(am.MaySendTo(eve, bob), false)
  17. am.Accept(alice, bob)
  18. assertEqual(am.MaySendTo(alice, bob), false)
  19. assertEqual(am.MaySendTo(bob, alice), true)
  20. assertEqual(am.MaySendTo(alice, eve), false)
  21. assertEqual(am.MaySendTo(eve, alice), false)
  22. assertEqual(am.MaySendTo(bob, eve), false)
  23. assertEqual(am.MaySendTo(eve, bob), false)
  24. am.Accept(bob, alice)
  25. assertEqual(am.MaySendTo(alice, bob), true)
  26. assertEqual(am.MaySendTo(bob, alice), true)
  27. assertEqual(am.MaySendTo(alice, eve), false)
  28. assertEqual(am.MaySendTo(eve, alice), false)
  29. assertEqual(am.MaySendTo(bob, eve), false)
  30. assertEqual(am.MaySendTo(eve, bob), false)
  31. am.Accept(bob, eve)
  32. assertEqual(am.MaySendTo(alice, bob), true)
  33. assertEqual(am.MaySendTo(bob, alice), true)
  34. assertEqual(am.MaySendTo(alice, eve), false)
  35. assertEqual(am.MaySendTo(eve, alice), false)
  36. assertEqual(am.MaySendTo(bob, eve), false)
  37. assertEqual(am.MaySendTo(eve, bob), true)
  38. am.Remove(alice)
  39. assertEqual(am.MaySendTo(alice, bob), false)
  40. assertEqual(am.MaySendTo(bob, alice), false)
  41. assertEqual(am.MaySendTo(alice, eve), false)
  42. assertEqual(am.MaySendTo(eve, alice), false)
  43. assertEqual(am.MaySendTo(bob, eve), false)
  44. assertEqual(am.MaySendTo(eve, bob), true)
  45. am.Remove(bob)
  46. assertEqual(am.MaySendTo(alice, bob), false)
  47. assertEqual(am.MaySendTo(bob, alice), false)
  48. assertEqual(am.MaySendTo(alice, eve), false)
  49. assertEqual(am.MaySendTo(eve, alice), false)
  50. assertEqual(am.MaySendTo(bob, eve), false)
  51. assertEqual(am.MaySendTo(eve, bob), false)
  52. }
  53. func TestAcceptInternal(t *testing.T) {
  54. var am AcceptManager
  55. am.Initialize()
  56. alice := new(Client)
  57. bob := new(Client)
  58. eve := new(Client)
  59. am.Accept(alice, bob)
  60. am.Accept(bob, alice)
  61. am.Accept(bob, eve)
  62. am.Remove(alice)
  63. am.Remove(bob)
  64. // assert that there is no memory leak
  65. for _, client := range []*Client{alice, bob, eve} {
  66. assertEqual(len(am.clientToAccepted[client]), 0)
  67. assertEqual(len(am.clientToAccepters[client]), 0)
  68. }
  69. }