diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifier.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifier.java index 330dcbb..2545fc3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifier.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifier.java @@ -48,7 +48,7 @@ public class TokenClassifier { } private static void validateSeparator(List rawTokens, int index) { - boolean missingKey = index == 0 || rawTokens.get(index - 1).type() != RawTokenType.WORD; + boolean missingKey = index <= 1 || rawTokens.get(index - 1).type() != RawTokenType.WORD; boolean missingValue = index + 1 >= rawTokens.size() diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifierTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifierTest.java index 9a3dc21..8c8748f 100644 --- a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifierTest.java +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/parser/tokenizer/TokenClassifierTest.java @@ -63,6 +63,15 @@ public class TokenClassifierTest { assertEquals("Expected VALUE after '='", ex.getMessage()); } + @Test + void testMissingKeyBeforeSeparatorThrows() { + List raw = Tokenizer.tokenize("CMD =VALUE"); + + TokenizerException ex = + assertThrows(TokenizerException.class, () -> TokenClassifier.classify(raw)); + assertEquals("Expected KEY before '='", ex.getMessage()); + } + @Test void testNextWordIsKeyThrows() { List raw = Tokenizer.tokenize("CMD KEY1=KEY2=42");