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 6.8KB

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