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 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. }
  52. internal class ModePrefixMappingTest {
  53. @Test
  54. fun `ModePrefixMapping identifies which chars are prefixes`() {
  55. val mapping = ModePrefixMapping("oav", "+@-")
  56. assertTrue(mapping.isPrefix('+'))
  57. assertTrue(mapping.isPrefix('@'))
  58. assertFalse(mapping.isPrefix('!'))
  59. assertFalse(mapping.isPrefix('o'))
  60. }
  61. @Test
  62. fun `ModePrefixMapping identifies which chars are modes`() {
  63. val mapping = ModePrefixMapping("oav", "+@-")
  64. assertFalse(mapping.isMode('+'))
  65. assertFalse(mapping.isMode('@'))
  66. assertFalse(mapping.isMode('!'))
  67. assertTrue(mapping.isMode('o'))
  68. }
  69. @Test
  70. fun `ModePrefixMapping maps prefixes to modes`() {
  71. val mapping = ModePrefixMapping("oav", "+@-")
  72. assertEquals('o', mapping.getMode('+'))
  73. assertEquals('a', mapping.getMode('@'))
  74. assertEquals('v', mapping.getMode('-'))
  75. }
  76. @Test
  77. fun `ModePrefixMapping maps prefix strings to modes`() {
  78. val mapping = ModePrefixMapping("oav", "+@-")
  79. assertEquals("oa", mapping.getModes("+@"))
  80. assertEquals("o", mapping.getModes("+"))
  81. assertEquals("", mapping.getModes(""))
  82. assertEquals("vao", mapping.getModes("-@+"))
  83. }
  84. }