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.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. reset()
  61. assertFalse(receivedWelcome)
  62. assertEquals(ServerStatus.Disconnected, status)
  63. assertEquals("acidBurn", localNickname)
  64. assertEquals("", serverName)
  65. assertTrue(features.isEmpty())
  66. assertTrue(capabilities.advertisedCapabilities.isEmpty())
  67. assertEquals("", sasl.saslBuffer)
  68. }
  69. }
  70. internal class ModePrefixMappingTest {
  71. @Test
  72. fun `ModePrefixMapping identifies which chars are prefixes`() {
  73. val mapping = ModePrefixMapping("oav", "+@-")
  74. assertTrue(mapping.isPrefix('+'))
  75. assertTrue(mapping.isPrefix('@'))
  76. assertFalse(mapping.isPrefix('!'))
  77. assertFalse(mapping.isPrefix('o'))
  78. }
  79. @Test
  80. fun `ModePrefixMapping identifies which chars are modes`() {
  81. val mapping = ModePrefixMapping("oav", "+@-")
  82. assertFalse(mapping.isMode('+'))
  83. assertFalse(mapping.isMode('@'))
  84. assertFalse(mapping.isMode('!'))
  85. assertTrue(mapping.isMode('o'))
  86. }
  87. @Test
  88. fun `ModePrefixMapping maps prefixes to modes`() {
  89. val mapping = ModePrefixMapping("oav", "+@-")
  90. assertEquals('o', mapping.getMode('+'))
  91. assertEquals('a', mapping.getMode('@'))
  92. assertEquals('v', mapping.getMode('-'))
  93. }
  94. @Test
  95. fun `ModePrefixMapping maps prefix strings to modes`() {
  96. val mapping = ModePrefixMapping("oav", "+@-")
  97. assertEquals("oa", mapping.getModes("+@"))
  98. assertEquals("o", mapping.getModes("+"))
  99. assertEquals("", mapping.getModes(""))
  100. assertEquals("vao", mapping.getModes("-@+"))
  101. }
  102. }