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.

UserStateTest.kt 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.dmdirc.ktirc.model
  2. import com.dmdirc.ktirc.io.CaseMapping
  3. import org.junit.jupiter.api.Assertions.*
  4. import org.junit.jupiter.api.Test
  5. internal class UserStateTest {
  6. private val userState = UserState { CaseMapping.Rfc }
  7. @Test
  8. fun `adds and gets new users`() {
  9. userState += User("acidBurn", "libby", "root.localhost")
  10. val user = userState["acidburn"]
  11. assertNotNull(user)
  12. assertEquals("acidBurn", user?.details?.nickname)
  13. assertEquals("libby", user?.details?.ident)
  14. assertEquals("root.localhost", user?.details?.hostname)
  15. }
  16. @Test
  17. fun `removes users`() {
  18. userState += User("acidBurn", "libby", "root.localhost")
  19. userState -= User("ACIDBURN")
  20. assertNull(userState["acidburn"])
  21. }
  22. @Test
  23. fun `removes users by nickname`() {
  24. userState += User("acidBurn", "libby", "root.localhost")
  25. userState -= "ACIDBURN"
  26. assertNull(userState["acidburn"])
  27. }
  28. @Test
  29. fun `updates existing user with same nickname`() {
  30. userState += User("acidBurn", "libby", "root.localhost")
  31. userState.update(User("acidBurn", realName = "Libby", awayMessage = "Hacking"))
  32. val user = userState["acidburn"]!!
  33. assertEquals("acidBurn", user.details.nickname)
  34. assertEquals("libby", user.details.ident)
  35. assertEquals("root.localhost", user.details.hostname)
  36. assertEquals("Libby", user.details.realName)
  37. assertEquals("Hacking", user.details.awayMessage)
  38. }
  39. @Test
  40. fun `updates existing user with new nickname`() {
  41. userState += User("acidBurn", "libby", "root.localhost")
  42. userState.update(User("acidBurn2", realName = "Libby", awayMessage = "Hacking"), "acidBurn")
  43. val user = userState["acidburn2"]!!
  44. assertEquals("acidBurn2", user.details.nickname)
  45. assertEquals("libby", user.details.ident)
  46. assertEquals("root.localhost", user.details.hostname)
  47. assertEquals("Libby", user.details.realName)
  48. assertEquals("Hacking", user.details.awayMessage)
  49. assertNull(userState["acidBurn"])
  50. }
  51. @Test
  52. fun `addToChannel adds new user if not known`() {
  53. userState.addToChannel(User("acidBurn", "libby", "root.localhost"), "#thegibson")
  54. val user = userState["acidburn"]!!
  55. assertEquals("acidBurn", user.details.nickname)
  56. assertEquals("libby", user.details.ident)
  57. assertEquals("root.localhost", user.details.hostname)
  58. assertEquals(1, user.channels.count())
  59. assertTrue("#thegibson" in user.channels)
  60. }
  61. @Test
  62. fun `addToChannel appends channel to existing user`() {
  63. userState += User("acidBurn", "libby", "root.localhost")
  64. userState.addToChannel(User("acidBurn"), "#thegibson")
  65. val user = userState["acidburn"]!!
  66. assertEquals(1, user.channels.count())
  67. assertTrue("#thegibson" in user.channels)
  68. }
  69. @Test
  70. fun `removeIf deletes all matching users`() {
  71. userState += User("acidBurn", "libby", "root.localhost")
  72. userState += User("zeroCool", "dade", "root.localhost")
  73. userState += User("acidBurn2", "libby", "root.localhost")
  74. userState.removeIf { it.details.nickname.startsWith("acidBurn") }
  75. assertEquals(1, userState.count())
  76. assertNotNull(userState["zeroCool"])
  77. }
  78. @Test
  79. fun `reset clears all state`() {
  80. userState += User("acidBurn", "libby", "root.localhost")
  81. userState += User("zeroCool", "dade", "root.localhost")
  82. userState += User("acidBurn2", "libby", "root.localhost")
  83. userState.reset()
  84. assertEquals(0, userState.count())
  85. }
  86. }