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.

MessageBuilderTest.kt 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.model.MessageTag
  3. import org.junit.jupiter.api.Assertions.assertEquals
  4. import org.junit.jupiter.api.Test
  5. internal class MessageBuilderTest {
  6. private val builder = MessageBuilder()
  7. @Test
  8. fun `builds a command on its own`() =
  9. assertEquals("TEST", String(builder.build(emptyMap(), "TEST", emptyArray())))
  10. @Test
  11. fun `handles a single argument`() =
  12. assertEquals("TEST foo", String(builder.build(emptyMap(), "TEST", arrayOf("foo"))))
  13. @Test
  14. fun `handles a single argument starting with a colon`() =
  15. assertEquals("TEST ::foo", String(builder.build(emptyMap(), "TEST", arrayOf(":foo"))))
  16. @Test
  17. fun `handles a single argument with spaces`() =
  18. assertEquals("TEST :foo bar", String(builder.build(emptyMap(), "TEST", arrayOf("foo bar"))))
  19. @Test
  20. fun `handles many arguments`() =
  21. assertEquals("TEST foo bar baz", String(builder.build(emptyMap(), "TEST", arrayOf("foo", "bar", "baz"))))
  22. @Test
  23. fun `handles many arguments with spaces in the last`() =
  24. assertEquals("TEST foo bar :baz quux", String(builder.build(emptyMap(), "TEST", arrayOf("foo", "bar", "baz quux"))))
  25. @Test
  26. fun `handles single tag`() =
  27. assertEquals(
  28. "@draft/label=abc TEST foo bar",
  29. String(builder.build(
  30. mapOf(MessageTag.Label to "abc"),
  31. "TEST",
  32. arrayOf("foo", "bar"))))
  33. @Test
  34. fun `handles multiple tags`() =
  35. assertEquals(
  36. "@draft/label=abc;account=acidB TEST foo bar",
  37. String(builder.build(
  38. mapOf(MessageTag.Label to "abc", MessageTag.AccountName to "acidB"),
  39. "TEST",
  40. arrayOf("foo", "bar"))))
  41. @Test
  42. fun `escapes tag values`() =
  43. assertEquals(
  44. "@draft/label=\\\\hack\\sthe\\r\\nplanet\\: TEST foo bar",
  45. String(builder.build(
  46. mapOf(MessageTag.Label to "\\hack the\r\nplanet;"),
  47. "TEST",
  48. arrayOf("foo", "bar"))))
  49. }