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.

ISupportProcessorTest.kt 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.io.CaseMapping
  3. import com.dmdirc.ktirc.model.IrcMessage
  4. import com.dmdirc.ktirc.model.ModePrefixMapping
  5. import com.dmdirc.ktirc.model.ServerFeature
  6. import com.dmdirc.ktirc.model.ServerFeatureMap
  7. import com.dmdirc.ktirc.params
  8. import org.junit.jupiter.api.Assertions.*
  9. import org.junit.jupiter.api.Test
  10. internal class ISupportProcessorTest {
  11. private val processor = ISupportProcessor()
  12. @Test
  13. fun `ISupportProcessor can handle 005s`() {
  14. assertTrue(processor.commands.contains("005")) { "ISupportProcessor should handle 005 messages" }
  15. }
  16. @Test
  17. fun `ISupportProcessor handles multiple numeric arguments`() {
  18. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  19. params("nickname", "MAXCHANNELS=123", "CHANNELLEN=456", "are supported blah blah")))
  20. assertEquals(123, events[0].serverFeatures[ServerFeature.MaximumChannels])
  21. assertEquals(456, events[0].serverFeatures[ServerFeature.MaximumChannelNameLength])
  22. }
  23. @Test
  24. fun `ISupportProcessor handles string arguments`() {
  25. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  26. params("nickname", "NETWORK=abcd", "are supported blah blah")))
  27. assertEquals("abcd", events[0].serverFeatures[ServerFeature.Network])
  28. }
  29. @Test
  30. fun `ISupportProcessor handles string array arguments`() {
  31. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  32. params("nickname", "CHANMODES=abcd,efg,,hij", "are supported blah blah")))
  33. val modes = events[0].serverFeatures[ServerFeature.ChannelModes]!!
  34. assertEquals("abcd", modes[0])
  35. assertEquals("efg", modes[1])
  36. assertEquals("", modes[2])
  37. assertEquals("hij", modes[3])
  38. }
  39. @Test
  40. fun `ISupportProcessor handles resetting arguments`() {
  41. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  42. params("nickname", "-CHANMODES", "are supported blah blah")))
  43. val oldFeatures = ServerFeatureMap()
  44. oldFeatures[ServerFeature.ChannelModes] = arrayOf("abc")
  45. oldFeatures.setAll(events[0].serverFeatures)
  46. assertNull(oldFeatures[ServerFeature.ChannelModes])
  47. }
  48. @Test
  49. fun `ISupportProcessor handles case mapping arguments`() {
  50. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  51. params("nickname", "CASEMAPPING=rfc1459-strict", "are supported blah blah")))
  52. assertEquals(CaseMapping.RfcStrict, events[0].serverFeatures[ServerFeature.ServerCaseMapping])
  53. }
  54. @Test
  55. fun `ISupportProcessor handles mode prefix arguments`() {
  56. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  57. params("nickname", "PREFIX=(ovd)@+%", "are supported blah blah")))
  58. assertEquals(ModePrefixMapping("ovd", "@+%"), events[0].serverFeatures[ServerFeature.ModePrefixes])
  59. }
  60. @Test
  61. fun `ISupportProcessor handles network arguments`() {
  62. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  63. params("nickname", "NETWORK=gibson", "are supported blah blah")))
  64. assertEquals("gibson", events[0].serverFeatures[ServerFeature.Network])
  65. }
  66. @Test
  67. fun `ISupportProcessor handles boolean features with no arguments`() {
  68. val events = processor.process(IrcMessage(emptyMap(), "server.com".toByteArray(), "005",
  69. params("nickname", "WHOX", "are supported blah blah")))
  70. assertEquals(true, events[0].serverFeatures[ServerFeature.WhoxSupport])
  71. }
  72. }