Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

IrcMessageTest.kt 3.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.dmdirc.ktirc.model
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.util.currentTimeProvider
  4. import com.dmdirc.ktirc.util.currentTimeZoneProvider
  5. import org.junit.jupiter.api.Assertions.assertEquals
  6. import org.junit.jupiter.api.Assertions.assertNull
  7. import org.junit.jupiter.api.Test
  8. import java.time.LocalDateTime
  9. import java.time.ZoneId
  10. internal class IrcMessageTest {
  11. @Test
  12. fun `gets UTC time from ServerTime tag if present`() {
  13. currentTimeZoneProvider = { ZoneId.of("Z") }
  14. val message = IrcMessage(hashMapOf(MessageTag.ServerTime to "1995-09-15T09:00:00.0000Z"), null, "", emptyList())
  15. assertEquals(LocalDateTime.parse("1995-09-15T09:00:00"), message.metadata.time)
  16. }
  17. @Test
  18. fun `converts time in ServerTime tag to local timezone`() {
  19. currentTimeZoneProvider = { ZoneId.of("America/New_York") }
  20. val message = IrcMessage(hashMapOf(MessageTag.ServerTime to "1995-09-15T09:00:00.0000Z"), null, "", emptyList())
  21. assertEquals(LocalDateTime.parse("1995-09-15T05:00:00"), message.metadata.time)
  22. }
  23. @Test
  24. fun `uses current time if ServerTime tag is malformed`() {
  25. currentTimeProvider = { TestConstants.time }
  26. val message = IrcMessage(hashMapOf(MessageTag.ServerTime to "1996-05-03T13:00:00.***Z"), null, "", emptyList())
  27. assertEquals(LocalDateTime.parse("1995-09-15T09:00:00"), message.metadata.time)
  28. }
  29. @Test
  30. fun `uses current local time if no tag present`() {
  31. currentTimeProvider = { TestConstants.time }
  32. val message = IrcMessage(emptyMap(), null, "", emptyList())
  33. assertEquals(LocalDateTime.parse("1995-09-15T09:00:00"), message.metadata.time)
  34. }
  35. @Test
  36. fun `populates batch field if present`() {
  37. currentTimeProvider = { TestConstants.time }
  38. val message = IrcMessage(hashMapOf(MessageTag.Batch to "abc123"), null, "", emptyList())
  39. assertEquals("abc123", message.metadata.batchId)
  40. }
  41. @Test
  42. fun `populates message id if present`() {
  43. currentTimeProvider = { TestConstants.time }
  44. val message = IrcMessage(hashMapOf(MessageTag.MessageId to "abc123"), null, "", emptyList())
  45. assertEquals("abc123", message.metadata.messageId)
  46. }
  47. @Test
  48. fun `populates label if present`() {
  49. currentTimeProvider = { TestConstants.time }
  50. val message = IrcMessage(hashMapOf(MessageTag.Label to "abc123"), null, "", emptyList())
  51. assertEquals("abc123", message.metadata.label)
  52. }
  53. @Test
  54. fun `Can parse the prefix as a source user`() {
  55. val message = IrcMessage(emptyMap(), "acidBurn!libby@root.localhost".toByteArray(), "", emptyList())
  56. val user = message.sourceUser!!
  57. assertEquals("acidBurn", user.nickname)
  58. assertEquals("libby", user.ident)
  59. assertEquals("root.localhost", user.hostname)
  60. assertNull(user.account)
  61. }
  62. @Test
  63. fun `uses account-name tag when creating a source user`() {
  64. val message = IrcMessage(hashMapOf(MessageTag.AccountName to "acidBurn"), "acidBurn!libby@root.localhost".toByteArray(), "", emptyList())
  65. val user = message.sourceUser!!
  66. assertEquals("acidBurn", user.nickname)
  67. assertEquals("libby", user.ident)
  68. assertEquals("root.localhost", user.hostname)
  69. assertEquals("acidBurn", user.account)
  70. }
  71. }