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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 `UserState 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 `UserState removes users`() {
  18. userState += User("acidBurn", "libby", "root.localhost")
  19. userState -= User("ACIDBURN")
  20. assertNull(userState["acidburn"])
  21. }
  22. @Test
  23. fun `UserState updates existing user with same nickname`() {
  24. userState += User("acidBurn", "libby", "root.localhost")
  25. userState.update(User("acidBurn", realName = "Libby", awayMessage = "Hacking"))
  26. val user = userState["acidburn"]!!
  27. assertEquals("acidBurn", user.details.nickname)
  28. assertEquals("libby", user.details.ident)
  29. assertEquals("root.localhost", user.details.hostname)
  30. assertEquals("Libby", user.details.realName)
  31. assertEquals("Hacking", user.details.awayMessage)
  32. }
  33. @Test
  34. fun `UserState updates existing user with new nickname`() {
  35. userState += User("acidBurn", "libby", "root.localhost")
  36. userState.update(User("acidBurn2", realName = "Libby", awayMessage = "Hacking"), "acidBurn")
  37. val user = userState["acidburn2"]!!
  38. assertEquals("acidBurn2", user.details.nickname)
  39. assertEquals("libby", user.details.ident)
  40. assertEquals("root.localhost", user.details.hostname)
  41. assertEquals("Libby", user.details.realName)
  42. assertEquals("Hacking", user.details.awayMessage)
  43. assertNull(userState["acidBurn"])
  44. }
  45. @Test
  46. fun `addToChannel adds new user if not known`() {
  47. userState.addToChannel(User("acidBurn", "libby", "root.localhost"), "#thegibson")
  48. val user = userState["acidburn"]!!
  49. assertEquals("acidBurn", user.details.nickname)
  50. assertEquals("libby", user.details.ident)
  51. assertEquals("root.localhost", user.details.hostname)
  52. assertEquals(1, user.channels.count())
  53. assertTrue("#thegibson" in user.channels)
  54. }
  55. @Test
  56. fun `addToChannel appends channel to existing user`() {
  57. userState += User("acidBurn", "libby", "root.localhost")
  58. userState.addToChannel(User("acidBurn"), "#thegibson")
  59. val user = userState["acidburn"]!!
  60. assertEquals(1, user.channels.count())
  61. assertTrue("#thegibson" in user.channels)
  62. }
  63. @Test
  64. fun `removeIf deletes all matching users`() {
  65. userState += User("acidBurn", "libby", "root.localhost")
  66. userState += User("zeroCool", "dade", "root.localhost")
  67. userState += User("acidBurn2", "libby", "root.localhost")
  68. userState.removeIf { it.details.nickname.startsWith("acidBurn") }
  69. assertEquals(1, userState.count())
  70. assertNotNull(userState["zeroCool"])
  71. }
  72. }