RepipedMessageForwardTest.kt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. * Copyright 2019-2022 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/dev/LICENSE
  8. */
  9. package net.mamoe.mirai.console.frontendbase
  10. import java.io.OutputStreamWriter
  11. import java.io.PrintStream
  12. import kotlin.test.Test
  13. import kotlin.test.assertEquals
  14. internal class RepipedMessageForwardTest {
  15. private val pendingMsg = mutableListOf<String>()
  16. private val ouptut = RepipedMessageForward(pendingMsg::add).pipedOutputStream
  17. @Test
  18. fun testPrintStream() {
  19. val ps = PrintStream(ouptut)
  20. ps.println("ABC")
  21. ps.append("D").append("E").append("F").println("G")
  22. ps.println("LLOO")
  23. assertEquals(3, pendingMsg.size)
  24. assertEquals("ABC", pendingMsg.removeAt(0))
  25. assertEquals("DEFG", pendingMsg.removeAt(0))
  26. assertEquals("LLOO", pendingMsg.removeAt(0))
  27. }
  28. @Test
  29. fun testCRLF() {
  30. OutputStreamWriter(ouptut).use { writer ->
  31. writer.append("LINE").append("AAA").append("OOOO").append("\r\n")
  32. writer.append("Line1125744\r\n")
  33. writer.append("AFFXZ\r\n")
  34. }
  35. assertEquals(3, pendingMsg.size)
  36. assertEquals("LINEAAAOOOO", pendingMsg.removeAt(0))
  37. assertEquals("Line1125744", pendingMsg.removeAt(0))
  38. assertEquals("AFFXZ", pendingMsg.removeAt(0))
  39. }
  40. @Test
  41. fun testLF() {
  42. OutputStreamWriter(ouptut).use { writer ->
  43. writer.append("LINE").append("\n")
  44. writer.append("Line5\n")
  45. writer.append("AFFXZ\n")
  46. writer.append("NO\rCR REMOVED\n")
  47. }
  48. assertEquals(4, pendingMsg.size)
  49. assertEquals("LINE", pendingMsg.removeAt(0))
  50. assertEquals("Line5", pendingMsg.removeAt(0))
  51. assertEquals("AFFXZ", pendingMsg.removeAt(0))
  52. assertEquals("NO\rCR REMOVED", pendingMsg.removeAt(0))
  53. }
  54. @Test
  55. fun testCRLFMixing() {
  56. OutputStreamWriter(ouptut).use { writer ->
  57. writer.append("LF\n")
  58. writer.append("CRLF\r\n")
  59. writer.append("LFLF\n\n")
  60. }
  61. assertEquals(4, pendingMsg.size)
  62. assertEquals("LF", pendingMsg.removeAt(0))
  63. assertEquals("CRLF", pendingMsg.removeAt(0))
  64. assertEquals("LFLF", pendingMsg.removeAt(0))
  65. assertEquals("", pendingMsg.removeAt(0))
  66. }
  67. @Test
  68. fun testEmptyLines_LF() {
  69. OutputStreamWriter(ouptut).use { writer ->
  70. repeat(7) {
  71. writer.append("\n")
  72. }
  73. }
  74. assertEquals(7, pendingMsg.size)
  75. repeat(7) {
  76. assertEquals("", pendingMsg.removeAt(0))
  77. }
  78. }
  79. @Test
  80. fun testEmptyLines_CRLF() {
  81. OutputStreamWriter(ouptut).use { writer ->
  82. repeat(7) {
  83. writer.append("\r\n")
  84. }
  85. }
  86. assertEquals(7, pendingMsg.size)
  87. repeat(7) {
  88. assertEquals("", pendingMsg.removeAt(0))
  89. }
  90. }
  91. }