mirror of
https://github.com/JakeWharton/mosaic.git
synced 2025-11-02 21:40:06 +08:00
Extract base parser test (#653)
This removes duplication, but will also aid in future migration to new API.
This commit is contained in:
@ -0,0 +1,17 @@
|
||||
package com.jakewharton.mosaic.terminal
|
||||
|
||||
import kotlin.test.AfterTest
|
||||
|
||||
abstract class BaseTerminalParserTest {
|
||||
internal val writer = Tty.stdinWriter()
|
||||
internal val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
internal fun StdinWriter.writeHex(hex: String) {
|
||||
write(hex.hexToByteArray())
|
||||
}
|
||||
}
|
||||
@ -3,17 +3,9 @@ package com.jakewharton.mosaic.terminal
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.BracketedPasteEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
class TerminalParserCsiBracketedPasteEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiBracketedPasteEventTest : BaseTerminalParserTest() {
|
||||
@Test fun pasteStart() {
|
||||
writer.writeHex("1b5b3230307e")
|
||||
assertThat(parser.next()).isEqualTo(BracketedPasteEvent(start = true))
|
||||
|
||||
@ -9,18 +9,10 @@ import com.jakewharton.mosaic.terminal.event.DecModeReportEvent.Setting.Permanen
|
||||
import com.jakewharton.mosaic.terminal.event.DecModeReportEvent.Setting.Reset
|
||||
import com.jakewharton.mosaic.terminal.event.DecModeReportEvent.Setting.Set
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiDecModeReportEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiDecModeReportEventTest : BaseTerminalParserTest() {
|
||||
@Test fun settings() {
|
||||
writer.writeHex("1b5b3f313030343b302479")
|
||||
assertThat(parser.next()).isEqualTo(
|
||||
|
||||
@ -3,17 +3,9 @@ package com.jakewharton.mosaic.terminal
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.FocusEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
class TerminalParserCsiFocusEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiFocusEventTest : BaseTerminalParserTest() {
|
||||
@Test fun focusedTrue() {
|
||||
writer.writeHex("1b5b49")
|
||||
assertThat(parser.next()).isEqualTo(FocusEvent(focused = true))
|
||||
|
||||
@ -19,18 +19,10 @@ import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.ModifierSup
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.Right
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.Up
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiKeyboardEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiKeyboardEventTest : BaseTerminalParserTest() {
|
||||
@Test fun up() {
|
||||
writer.writeHex("1b5b41")
|
||||
assertThat(parser.next()).isEqualTo(KeyboardEvent(Up))
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.ModifierShift
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiKittyKeyboardEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiKittyKeyboardEventTest : BaseTerminalParserTest() {
|
||||
@Test fun h() {
|
||||
writer.writeHex("1b5b31303475")
|
||||
assertThat(parser.next()).isEqualTo(
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.KittyKeyboardQueryEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiKittyKeyboardQueryEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiKittyKeyboardQueryEventTest : BaseTerminalParserTest() {
|
||||
@Test fun flagsNone() {
|
||||
writer.writeHex("1b5b3f3075")
|
||||
assertThat(parser.next()).isEqualTo(KittyKeyboardQueryEvent(0))
|
||||
|
||||
@ -6,18 +6,10 @@ import com.jakewharton.mosaic.terminal.event.MouseEvent
|
||||
import com.jakewharton.mosaic.terminal.event.MouseEvent.Button
|
||||
import com.jakewharton.mosaic.terminal.event.MouseEvent.Type
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiMouseEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiMouseEventTest : BaseTerminalParserTest() {
|
||||
@Test fun motion() {
|
||||
writer.writeHex("1b5b4d434837")
|
||||
assertThat(parser.next()).isEqualTo(
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.OperatingStatusResponseEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiOperatingStatusResponseEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiOperatingStatusResponseEventTest : BaseTerminalParserTest() {
|
||||
@Test fun ok() {
|
||||
writer.writeHex("1b5b306e")
|
||||
assertThat(parser.next()).isEqualTo(OperatingStatusResponseEvent(ok = true))
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.PrimaryDeviceAttributesEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiPrimaryDeviceAttributesEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiPrimaryDeviceAttributesEventTest : BaseTerminalParserTest() {
|
||||
@Test fun noLeadingQuestionMarkIsUnknown() {
|
||||
writer.writeHex("1b5b303063")
|
||||
assertThat(parser.next()).isEqualTo(
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.ResizeEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiResizeEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiResizeEventTest : BaseTerminalParserTest() {
|
||||
@Test fun basic() {
|
||||
writer.writeHex("1b5b34383b313b323b333b3474")
|
||||
assertThat(parser.next()).isEqualTo(ResizeEvent(2, 1, 4, 3))
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.SystemThemeEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiSystemThemeEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiSystemThemeEventTest : BaseTerminalParserTest() {
|
||||
@Test fun dark() {
|
||||
writer.writeHex("1b5b3f3939373b316e")
|
||||
assertThat(parser.next()).isEqualTo(SystemThemeEvent(isDark = true))
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import com.jakewharton.mosaic.terminal.event.XtermCharacterSizeEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiXtermCharacterSizeEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiXtermCharacterSizeEventTest : BaseTerminalParserTest() {
|
||||
@Test fun basic() {
|
||||
writer.writeHex("1b5b383b313b3274")
|
||||
assertThat(parser.next()).isEqualTo(XtermCharacterSizeEvent(1, 2))
|
||||
|
||||
@ -4,18 +4,10 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import com.jakewharton.mosaic.terminal.event.XtermPixelSizeEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserCsiXtermPixelSizeEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserCsiXtermPixelSizeEventTest : BaseTerminalParserTest() {
|
||||
@Test fun basic() {
|
||||
writer.writeHex("1b5b343b313b3274")
|
||||
assertThat(parser.next()).isEqualTo(XtermPixelSizeEvent(1, 2))
|
||||
|
||||
@ -3,17 +3,9 @@ package com.jakewharton.mosaic.terminal
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.TerminalVersionEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
class TerminalParserDcsTerminalVersionEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserDcsTerminalVersionEventTest : BaseTerminalParserTest() {
|
||||
@Test fun empty() {
|
||||
writer.writeHex("1b503e7c1b5c")
|
||||
assertThat(parser.next()).isEqualTo(TerminalVersionEvent(""))
|
||||
|
||||
@ -4,17 +4,9 @@ import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.ModifierCtrl
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
class TerminalParserGroundKeyboardEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserGroundKeyboardEventTest : BaseTerminalParserTest() {
|
||||
@Test fun graphic() {
|
||||
for (codepoint in 0x20..0x7f) {
|
||||
val hex = codepoint.toString(16)
|
||||
|
||||
@ -5,18 +5,10 @@ import assertk.assertions.isEqualTo
|
||||
import com.jakewharton.mosaic.terminal.event.KittyPointerQueryNameEvent
|
||||
import com.jakewharton.mosaic.terminal.event.KittyPointerQuerySupportEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserOscKittyPointerQueryEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserOscKittyPointerQueryEventTest : BaseTerminalParserTest() {
|
||||
@Test fun emptyFails() {
|
||||
writer.writeHex("1b5d32323b1b5c")
|
||||
assertThat(parser.next()).isEqualTo(
|
||||
|
||||
@ -15,18 +15,10 @@ import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.Right
|
||||
import com.jakewharton.mosaic.terminal.event.KeyboardEvent.Companion.Up
|
||||
import com.jakewharton.mosaic.terminal.event.OperatingStatusResponseEvent
|
||||
import com.jakewharton.mosaic.terminal.event.UnknownEvent
|
||||
import kotlin.test.AfterTest
|
||||
import kotlin.test.Test
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
class TerminalParserSs3KeyboardEventTest {
|
||||
private val writer = Tty.stdinWriter()
|
||||
private val parser = TerminalParser(writer.reader)
|
||||
|
||||
@AfterTest fun after() {
|
||||
writer.close()
|
||||
}
|
||||
|
||||
class TerminalParserSs3KeyboardEventTest : BaseTerminalParserTest() {
|
||||
@Test fun up() {
|
||||
writer.writeHex("1b4f41")
|
||||
assertThat(parser.next()).isEqualTo(KeyboardEvent(Up))
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
package com.jakewharton.mosaic.terminal
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
internal fun StdinWriter.writeHex(hex: String) {
|
||||
write(hex.hexToByteArray())
|
||||
}
|
||||
Reference in New Issue
Block a user