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.

ISupportProcessorTest.kt 4.0KB

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