Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CapabilityProcessorTest.kt 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.events.ServerCapabilitiesAcknowledged
  3. import com.dmdirc.ktirc.events.ServerCapabilitiesFinished
  4. import com.dmdirc.ktirc.events.ServerCapabilitiesReceived
  5. import com.dmdirc.ktirc.model.Capability
  6. import com.dmdirc.ktirc.model.IrcMessage
  7. import org.junit.jupiter.api.Assertions.assertEquals
  8. import org.junit.jupiter.api.Assertions.assertTrue
  9. import org.junit.jupiter.api.Test
  10. internal class CapabilityProcessorTest {
  11. private val processor = CapabilityProcessor()
  12. @Test
  13. fun `CapabilityProcessor does nothing for unknown subcommand`() {
  14. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*".toByteArray(), "FOO".toByteArray())))
  15. assertTrue(events.isEmpty())
  16. }
  17. @Test
  18. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with known capabilities`() {
  19. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "LS", "chghost extended-join invalid").map { it.toByteArray() }))
  20. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  21. assertEquals(2, receivedEvent.capabilities.size)
  22. assertTrue(Capability.HostChangeMessages in receivedEvent.capabilities)
  23. assertTrue(Capability.AccountAndRealNameInJoinMessages in receivedEvent.capabilities)
  24. }
  25. @Test
  26. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with values for capabilities`() {
  27. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "LS", "chghost=test123 extended-join=abc=def invalid").map { it.toByteArray() }))
  28. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  29. assertEquals(2, receivedEvent.capabilities.size)
  30. assertEquals("test123", receivedEvent.capabilities[Capability.HostChangeMessages])
  31. assertEquals("abc=def", receivedEvent.capabilities[Capability.AccountAndRealNameInJoinMessages])
  32. }
  33. @Test
  34. fun `CapabilityProcessor overwrites earlier values with later ones for identical capabilities`() {
  35. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "LS", "chghost=test123 chghost chghost=456").map { it.toByteArray() }))
  36. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  37. assertEquals(1, receivedEvent.capabilities.size)
  38. assertEquals("456", receivedEvent.capabilities[Capability.HostChangeMessages])
  39. }
  40. @Test
  41. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with known capabilities for multi-line responses`() {
  42. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "LS", "*", "chghost extended-join invalid").map { it.toByteArray() }))
  43. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  44. assertEquals(2, receivedEvent.capabilities.size)
  45. assertTrue(Capability.HostChangeMessages in receivedEvent.capabilities)
  46. assertTrue(Capability.AccountAndRealNameInJoinMessages in receivedEvent.capabilities)
  47. }
  48. @Test
  49. fun `CapabilityProcessor raises ServerCapabilitiesFinished event for final LS responses`() {
  50. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "LS", "chghost extended-join invalid").map { it.toByteArray() }))
  51. assertEquals(2, events.size)
  52. assertTrue(events[1] is ServerCapabilitiesFinished)
  53. }
  54. @Test
  55. fun `CapabilityProcessor raises ServerCapabilitiesAcknowledged event`() {
  56. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", listOf("*", "ACK", "chghost=test123 extended-join=abc=def invalid").map { it.toByteArray() }))
  57. val receivedEvent = events.filterIsInstance<ServerCapabilitiesAcknowledged>()[0]
  58. assertEquals(2, receivedEvent.capabilities.size)
  59. assertEquals("test123", receivedEvent.capabilities[Capability.HostChangeMessages])
  60. assertEquals("abc=def", receivedEvent.capabilities[Capability.AccountAndRealNameInJoinMessages])
  61. }
  62. }