mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-22 19:24:53 +08:00
fix InputCommand throws OutOfBounds while input is empty
This commit is contained in:
parent
d5c852e989
commit
81ba776c7d
@ -5,7 +5,7 @@ MORNY_ARCHIVE_NAME = morny-coeur
|
|||||||
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
|
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
|
||||||
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
|
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
|
||||||
|
|
||||||
VERSION = 1.2.2-beta1
|
VERSION = 1.2.2-beta2
|
||||||
|
|
||||||
USE_DELTA = false
|
USE_DELTA = false
|
||||||
VERSION_DELTA =
|
VERSION_DELTA =
|
||||||
|
@ -16,11 +16,11 @@ class InputCommand private (
|
|||||||
object InputCommand {
|
object InputCommand {
|
||||||
|
|
||||||
def apply (input: Array[String]): InputCommand = {
|
def apply (input: Array[String]): InputCommand = {
|
||||||
val _ex = input(0) split ("@", 2)
|
val _ex = if input.nonEmpty then input(0) split ("@", 2) else Array.empty[String]
|
||||||
val _args = input drop 1
|
val _args = input drop 1
|
||||||
new InputCommand(
|
new InputCommand(
|
||||||
if _ex.length == 1 then null else _ex(1),
|
if _ex.length > 1 then _ex(1) else null,
|
||||||
_ex(0),
|
if _ex.nonEmpty then _ex(0) else "",
|
||||||
_args
|
_args
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,6 @@ class UniversalCommandTest extends MornyTests with Matchers with TableDrivenProp
|
|||||||
Lmd("something error!\\") shouldEqual Array("something", "error!\\")
|
Lmd("something error!\\") shouldEqual Array("something", "error!\\")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
"with multi-line input" - {
|
"with multi-line input" - {
|
||||||
whileStrict("should throws IllegalArgumentException") in:
|
whileStrict("should throws IllegalArgumentException") in:
|
||||||
an [IllegalArgumentException] should be thrownBy Cmd("something will\nhave a new line")
|
an [IllegalArgumentException] should be thrownBy Cmd("something will\nhave a new line")
|
||||||
@ -96,6 +95,10 @@ class UniversalCommandTest extends MornyTests with Matchers with TableDrivenProp
|
|||||||
Lmd("something will\nhave a new line") shouldEqual Array("something", "will\nhave", "a", "new", "line")
|
Lmd("something will\nhave a new line") shouldEqual Array("something", "will\nhave", "a", "new", "line")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"empty string input should return empty array" in {
|
||||||
|
Cmd("") shouldEqual Array.empty[String]
|
||||||
|
Lmd("") shouldEqual Array.empty[String]
|
||||||
|
}
|
||||||
|
|
||||||
val example_special_character = Table(
|
val example_special_character = Table(
|
||||||
"char",
|
"char",
|
||||||
|
@ -16,35 +16,41 @@ class InputCommandTest extends MornyTests with TableDrivenPropertyChecks {
|
|||||||
"args"
|
"args"
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"/exit@sukazyo_deving_bot",
|
"exit@sukazyo_deving_bot",
|
||||||
"/exit",
|
"exit",
|
||||||
"sukazyo_deving_bot",
|
"sukazyo_deving_bot",
|
||||||
Array.empty[String]
|
Array.empty[String]
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"/test@a@b",
|
"test@a@b",
|
||||||
"/test",
|
"test",
|
||||||
"a@b",
|
"a@b",
|
||||||
Array.empty[String]
|
Array.empty[String]
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"/test-data@random#user",
|
"test-data@random#user",
|
||||||
"/test-data",
|
"test-data",
|
||||||
"random#user",
|
"random#user",
|
||||||
Array.empty[String]
|
Array.empty[String]
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"/info@sukazyo_deving_bot stickers.ID_403",
|
"info@sukazyo_deving_bot stickers.ID_403",
|
||||||
"/info",
|
"info",
|
||||||
"sukazyo_deving_bot",
|
"sukazyo_deving_bot",
|
||||||
Array("stickers.ID_403")
|
Array("stickers.ID_403")
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"/info some extra info",
|
"info some extra info",
|
||||||
"/info",
|
"info",
|
||||||
null,
|
null,
|
||||||
Array("some", "extra", "info")
|
Array("some", "extra", "info")
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
null,
|
||||||
|
Array.empty[String]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
examples forEvery { (source, command, target, args) =>
|
examples forEvery { (source, command, target, args) =>
|
||||||
|
Loading…
Reference in New Issue
Block a user