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.

ServerStateTest.kt 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.dmdirc.ktirc.model
  2. import org.junit.jupiter.api.Assertions.*
  3. import org.junit.jupiter.api.Test
  4. internal class ServerStateTest {
  5. @Test
  6. fun `ServerState should use the initial nickname as local nickname`() {
  7. val serverState = ServerState("acidBurn", "")
  8. assertEquals("acidBurn", serverState.localNickname)
  9. }
  10. @Test
  11. fun `ServerState should use the initial name as server name`() {
  12. val serverState = ServerState("", "the.gibson")
  13. assertEquals("the.gibson", serverState.serverName)
  14. }
  15. @Test
  16. fun `ServerState should default status to disconnected`() {
  17. val serverState = ServerState("acidBurn", "")
  18. assertEquals(ServerStatus.Disconnected, serverState.status)
  19. }
  20. @Test
  21. fun `returns mode type for known channel mode`() {
  22. val serverState = ServerState("acidBurn", "")
  23. serverState.features[ServerFeature.ChannelModes] = arrayOf("ab", "cd", "ef", "gh")
  24. assertEquals(ChannelModeType.List, serverState.channelModeType('a'))
  25. assertEquals(ChannelModeType.SetUnsetParameter, serverState.channelModeType('d'))
  26. assertEquals(ChannelModeType.SetParameter, serverState.channelModeType('e'))
  27. assertEquals(ChannelModeType.NoParameter, serverState.channelModeType('g'))
  28. }
  29. @Test
  30. fun `returns whether a mode is a channel user mode or not`() {
  31. val serverState = ServerState("acidBurn", "")
  32. serverState.features[ServerFeature.ModePrefixes] = ModePrefixMapping("oqv", "@~+")
  33. assertTrue(serverState.isChannelUserMode('o'))
  34. assertTrue(serverState.isChannelUserMode('q'))
  35. assertTrue(serverState.isChannelUserMode('v'))
  36. assertFalse(serverState.isChannelUserMode('@'))
  37. assertFalse(serverState.isChannelUserMode('!'))
  38. assertFalse(serverState.isChannelUserMode('z'))
  39. }
  40. @Test
  41. fun `returns NoParameter for unknown channel mode`() {
  42. val serverState = ServerState("acidBurn", "")
  43. serverState.features[ServerFeature.ChannelModes] = arrayOf("ab", "cd", "ef", "gh")
  44. assertEquals(ChannelModeType.NoParameter, serverState.channelModeType('z'))
  45. }
  46. @Test
  47. fun `returns NoParameter for channel modes if feature doesn't exist`() {
  48. val serverState = ServerState("acidBurn", "")
  49. assertEquals(ChannelModeType.NoParameter, serverState.channelModeType('b'))
  50. }
  51. @Test
  52. fun `reset clears all state`() = with(ServerState("acidBurn", "")) {
  53. receivedWelcome = true
  54. status = ServerStatus.Connecting
  55. localNickname = "acidBurn3"
  56. serverName = "root.the.gibson"
  57. features[ServerFeature.Network] = "gibson"
  58. capabilities.advertisedCapabilities[Capability.SaslAuthentication] = "sure"
  59. sasl.saslBuffer = "in progress"
  60. batches["batch"] = Batch("type", emptyList())
  61. reset()
  62. assertFalse(receivedWelcome)
  63. assertEquals(ServerStatus.Disconnected, status)
  64. assertEquals("acidBurn", localNickname)
  65. assertEquals("", serverName)
  66. assertTrue(features.isEmpty())
  67. assertTrue(capabilities.advertisedCapabilities.isEmpty())
  68. assertEquals("", sasl.saslBuffer)
  69. assertTrue(batches.isEmpty())
  70. }
  71. }
  72. internal class ModePrefixMappingTest {
  73. @Test
  74. fun `ModePrefixMapping identifies which chars are prefixes`() {
  75. val mapping = ModePrefixMapping("oav", "+@-")
  76. assertTrue(mapping.isPrefix('+'))
  77. assertTrue(mapping.isPrefix('@'))
  78. assertFalse(mapping.isPrefix('!'))
  79. assertFalse(mapping.isPrefix('o'))
  80. }
  81. @Test
  82. fun `ModePrefixMapping identifies which chars are modes`() {
  83. val mapping = ModePrefixMapping("oav", "+@-")
  84. assertFalse(mapping.isMode('+'))
  85. assertFalse(mapping.isMode('@'))
  86. assertFalse(mapping.isMode('!'))
  87. assertTrue(mapping.isMode('o'))
  88. }
  89. @Test
  90. fun `ModePrefixMapping maps prefixes to modes`() {
  91. val mapping = ModePrefixMapping("oav", "+@-")
  92. assertEquals('o', mapping.getMode('+'))
  93. assertEquals('a', mapping.getMode('@'))
  94. assertEquals('v', mapping.getMode('-'))
  95. }
  96. @Test
  97. fun `ModePrefixMapping maps prefix strings to modes`() {
  98. val mapping = ModePrefixMapping("oav", "+@-")
  99. assertEquals("oa", mapping.getModes("+@"))
  100. assertEquals("o", mapping.getModes("+"))
  101. assertEquals("", mapping.getModes(""))
  102. assertEquals("vao", mapping.getModes("-@+"))
  103. }
  104. }