Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

ServerStateHandlerTest.kt 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.dmdirc.ktirc.events
  2. import com.dmdirc.ktirc.IrcClient
  3. import com.dmdirc.ktirc.TestConstants
  4. import com.dmdirc.ktirc.model.*
  5. import com.nhaarman.mockitokotlin2.doReturn
  6. import com.nhaarman.mockitokotlin2.mock
  7. import kotlinx.coroutines.runBlocking
  8. import org.junit.jupiter.api.Assertions.assertEquals
  9. import org.junit.jupiter.api.Assertions.assertTrue
  10. import org.junit.jupiter.api.Test
  11. internal class ServerStateHandlerTest {
  12. private val serverState = ServerState("", "")
  13. private val ircClient = mock<IrcClient> {
  14. on { serverState } doReturn serverState
  15. }
  16. private val handler = ServerStateHandler()
  17. @Test
  18. fun `ServerStateHandler sets local nickname on welcome event`() = runBlocking {
  19. handler.processEvent(ircClient, ServerWelcome(TestConstants.time, "the.gibson", "acidBurn"))
  20. assertEquals("acidBurn", serverState.localNickname)
  21. }
  22. @Test
  23. fun `ServerStateHandler sets server name on welcome event`() = runBlocking {
  24. handler.processEvent(ircClient, ServerWelcome(TestConstants.time, "the.gibson", "acidBurn"))
  25. assertEquals("the.gibson", serverState.serverName)
  26. }
  27. @Test
  28. fun `ServerStateHandler sets receivedWelcome on welcome event`() = runBlocking {
  29. handler.processEvent(ircClient, ServerWelcome(TestConstants.time, "the.gibson", "acidBurn"))
  30. assertTrue(serverState.receivedWelcome)
  31. }
  32. @Test
  33. fun `ServerStateHandler sets state to negotiating on connected`() = runBlocking {
  34. handler.processEvent(ircClient, ServerConnected(TestConstants.time))
  35. assertEquals(ServerStatus.Negotiating, serverState.status)
  36. }
  37. @Test
  38. fun `ServerStateHandler sets server state to ready on receiving post-005 line`() = runBlocking {
  39. ircClient.serverState.status = ServerStatus.Negotiating
  40. listOf(
  41. ServerWelcome(TestConstants.time, "the.gibson", "acidBurn"),
  42. PingReceived(TestConstants.time, "1234".toByteArray()),
  43. ServerCapabilitiesReceived(TestConstants.time, emptyMap()),
  44. ServerCapabilitiesAcknowledged(TestConstants.time, emptyMap()),
  45. ServerCapabilitiesFinished(TestConstants.time),
  46. MessageReceived(TestConstants.time, User("zeroCool"), "acidBurn", "Welcome!")
  47. ).forEach {
  48. assertEquals(ServerStatus.Negotiating, serverState.status)
  49. handler.processEvent(ircClient, it)
  50. }
  51. assertEquals(ServerStatus.Ready, serverState.status)
  52. }
  53. @Test
  54. fun `ServerStateHandler emits event on receiving post-005 line`() = runBlocking {
  55. ircClient.serverState.status = ServerStatus.Negotiating
  56. listOf(
  57. ServerWelcome(TestConstants.time, "the.gibson", "acidBurn"),
  58. PingReceived(TestConstants.time, "1234".toByteArray()),
  59. ServerCapabilitiesReceived(TestConstants.time, emptyMap()),
  60. ServerCapabilitiesAcknowledged(TestConstants.time, emptyMap()),
  61. ServerCapabilitiesFinished(TestConstants.time)
  62. ).forEach {
  63. assertTrue(handler.processEvent(ircClient, it).isEmpty())
  64. }
  65. val events = handler.processEvent(ircClient, MessageReceived(TestConstants.time, User("zeroCool"), "acidBurn", "Welcome!"))
  66. assertEquals(1, events.size)
  67. assertTrue(events[0] is ServerReady)
  68. }
  69. @Test
  70. fun `ServerStateHandler updates features on features event`() = runBlocking {
  71. val features = ServerFeatureMap()
  72. features[ServerFeature.ChannelModes] = "abc"
  73. features[ServerFeature.WhoxSupport] = true
  74. handler.processEvent(ircClient, ServerFeaturesUpdated(TestConstants.time, features))
  75. assertEquals("abc", serverState.features[ServerFeature.ChannelModes])
  76. assertEquals(true, serverState.features[ServerFeature.WhoxSupport])
  77. }
  78. }