Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

PrivmsgProcessorTest.kt 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.events.ActionReceived
  4. import com.dmdirc.ktirc.events.CtcpReceived
  5. import com.dmdirc.ktirc.events.MessageReceived
  6. import com.dmdirc.ktirc.model.IrcMessage
  7. import com.dmdirc.ktirc.model.User
  8. import com.dmdirc.ktirc.params
  9. import com.dmdirc.ktirc.util.currentTimeProvider
  10. import org.junit.jupiter.api.Assertions.assertEquals
  11. import org.junit.jupiter.api.BeforeEach
  12. import org.junit.jupiter.api.Test
  13. internal class PrivmsgProcessorTest {
  14. @BeforeEach
  15. fun setUp() {
  16. currentTimeProvider = { TestConstants.time }
  17. }
  18. @Test
  19. fun `PrivsgProcessor raises message received event`() {
  20. val events = PrivmsgProcessor().process(
  21. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "hack the planet!")))
  22. assertEquals(1, events.size)
  23. val event = events[0] as MessageReceived
  24. assertEquals(TestConstants.time, event.time)
  25. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  26. assertEquals("#crashandburn", event.target)
  27. assertEquals("hack the planet!", event.message)
  28. }
  29. @Test
  30. fun `PrivsgProcessor raises action received event with content`() {
  31. val events = PrivmsgProcessor().process(
  32. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "\u0001ACTION hacks the planet\u0001")))
  33. assertEquals(1, events.size)
  34. val event = events[0] as ActionReceived
  35. assertEquals(TestConstants.time, event.time)
  36. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  37. assertEquals("#crashandburn", event.target)
  38. assertEquals("hacks the planet", event.action)
  39. }
  40. @Test
  41. fun `PrivsgProcessor raises action received event without content`() {
  42. val events = PrivmsgProcessor().process(
  43. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "\u0001ACTION\u0001")))
  44. assertEquals(1, events.size)
  45. val event = events[0] as ActionReceived
  46. assertEquals(TestConstants.time, event.time)
  47. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  48. assertEquals("#crashandburn", event.target)
  49. assertEquals("", event.action)
  50. }
  51. @Test
  52. fun `PrivsgProcessor raises action received event with lowercase type`() {
  53. val events = PrivmsgProcessor().process(
  54. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "\u0001action hacks the planet\u0001")))
  55. assertEquals(1, events.size)
  56. val event = events[0] as ActionReceived
  57. assertEquals(TestConstants.time, event.time)
  58. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  59. assertEquals("#crashandburn", event.target)
  60. assertEquals("hacks the planet", event.action)
  61. }
  62. @Test
  63. fun `PrivsgProcessor raises CTCP received event with content`() {
  64. val events = PrivmsgProcessor().process(
  65. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "\u0001PING 12345\u0001")))
  66. assertEquals(1, events.size)
  67. val event = events[0] as CtcpReceived
  68. assertEquals(TestConstants.time, event.time)
  69. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  70. assertEquals("#crashandburn", event.target)
  71. assertEquals("PING", event.type)
  72. assertEquals("12345", event.content)
  73. }
  74. @Test
  75. fun `PrivsgProcessor raises CTCP received event without content`() {
  76. val events = PrivmsgProcessor().process(
  77. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "PRIVMSG", params("#crashandburn", "\u0001PING\u0001")))
  78. assertEquals(1, events.size)
  79. val event = events[0] as CtcpReceived
  80. assertEquals(TestConstants.time, event.time)
  81. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  82. assertEquals("#crashandburn", event.target)
  83. assertEquals("PING", event.type)
  84. assertEquals("", event.content)
  85. }
  86. @Test
  87. fun `PrivsgProcessor does nothing if prefix missing`() {
  88. val events = PrivmsgProcessor().process(
  89. IrcMessage(emptyMap(), null, "PRIVMSG", params("#crashandburn", "hack the planet!")))
  90. assertEquals(0, events.size)
  91. }
  92. }