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.

ModeProcessorTest.kt 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.model.IrcMessage
  4. import com.dmdirc.ktirc.params
  5. import com.dmdirc.ktirc.util.currentTimeProvider
  6. import org.junit.jupiter.api.Assertions.*
  7. import org.junit.jupiter.api.BeforeEach
  8. import org.junit.jupiter.api.Test
  9. internal class ModeProcessorTest {
  10. @BeforeEach
  11. fun setUp() {
  12. currentTimeProvider = { TestConstants.time }
  13. }
  14. @Test
  15. fun `raises event for user mode discovery with no params`() {
  16. val events = ModeProcessor().process(
  17. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "221", params("acidBurn", "+hax")))
  18. assertEquals(1, events.size)
  19. assertEquals(TestConstants.time, events[0].metadata.time)
  20. assertEquals("acidBurn", events[0].target)
  21. assertEquals("+hax", events[0].modes)
  22. assertEquals(0, events[0].arguments.size)
  23. assertTrue(events[0].discovered)
  24. }
  25. @Test
  26. fun `raises event for user mode discovery with params`() {
  27. val events = ModeProcessor().process(
  28. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "221", params("acidBurn", "+hax", "123", "467")))
  29. assertEquals(1, events.size)
  30. assertEquals(TestConstants.time, events[0].metadata.time)
  31. assertEquals("acidBurn", events[0].target)
  32. assertEquals("+hax", events[0].modes)
  33. assertEquals(2, events[0].arguments.size)
  34. assertEquals("123", events[0].arguments[0])
  35. assertEquals("467", events[0].arguments[1])
  36. assertTrue(events[0].discovered)
  37. }
  38. @Test
  39. fun `raises event for user mode change with no params`() {
  40. val events = ModeProcessor().process(
  41. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "MODE", params("acidBurn", "+hax")))
  42. assertEquals(1, events.size)
  43. assertEquals(TestConstants.time, events[0].metadata.time)
  44. assertEquals("acidBurn", events[0].target)
  45. assertEquals("+hax", events[0].modes)
  46. assertEquals(0, events[0].arguments.size)
  47. assertFalse(events[0].discovered)
  48. }
  49. @Test
  50. fun `raises event for user mode change with params`() {
  51. val events = ModeProcessor().process(
  52. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "MODE", params("acidBurn", "+hax", "123", "467")))
  53. assertEquals(1, events.size)
  54. assertEquals(TestConstants.time, events[0].metadata.time)
  55. assertEquals("acidBurn", events[0].target)
  56. assertEquals("+hax", events[0].modes)
  57. assertEquals(2, events[0].arguments.size)
  58. assertEquals("123", events[0].arguments[0])
  59. assertEquals("467", events[0].arguments[1])
  60. assertFalse(events[0].discovered)
  61. }
  62. @Test
  63. fun `raises event for channel mode discovery with no params`() {
  64. val events = ModeProcessor().process(
  65. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "324", params("acidBurn", "#thegibson", "+hax")))
  66. assertEquals(1, events.size)
  67. assertEquals(TestConstants.time, events[0].metadata.time)
  68. assertEquals("#thegibson", events[0].target)
  69. assertEquals("+hax", events[0].modes)
  70. assertEquals(0, events[0].arguments.size)
  71. assertTrue(events[0].discovered)
  72. }
  73. @Test
  74. fun `raises event for channel mode discovery with params`() {
  75. val events = ModeProcessor().process(
  76. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "324", params("acidBurn", "#thegibson", "+hax", "123", "467")))
  77. assertEquals(1, events.size)
  78. assertEquals(TestConstants.time, events[0].metadata.time)
  79. assertEquals("#thegibson", events[0].target)
  80. assertEquals("+hax", events[0].modes)
  81. assertEquals(2, events[0].arguments.size)
  82. assertEquals("123", events[0].arguments[0])
  83. assertEquals("467", events[0].arguments[1])
  84. assertTrue(events[0].discovered)
  85. }
  86. @Test
  87. fun `raises event for channel mode change with no params`() {
  88. val events = ModeProcessor().process(
  89. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "MODE", params("#thegibson", "+hax")))
  90. assertEquals(1, events.size)
  91. assertEquals(TestConstants.time, events[0].metadata.time)
  92. assertEquals("#thegibson", events[0].target)
  93. assertEquals("+hax", events[0].modes)
  94. assertEquals(0, events[0].arguments.size)
  95. assertFalse(events[0].discovered)
  96. }
  97. @Test
  98. fun `raises event for channel mode change with params`() {
  99. val events = ModeProcessor().process(
  100. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "MODE", params("#thegibson", "+hax", "123", "467")))
  101. assertEquals(1, events.size)
  102. assertEquals(TestConstants.time, events[0].metadata.time)
  103. assertEquals("#thegibson", events[0].target)
  104. assertEquals("+hax", events[0].modes)
  105. assertEquals(2, events[0].arguments.size)
  106. assertEquals("123", events[0].arguments[0])
  107. assertEquals("467", events[0].arguments[1])
  108. assertFalse(events[0].discovered)
  109. }
  110. @Test
  111. fun `ignores mode changes with a missing target`() {
  112. val events = ModeProcessor().process(
  113. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "MODE", params("+hax")))
  114. assertEquals(0, events.size)
  115. }
  116. }