diff --git a/LanguageServer/src/test/java/org/nittalab/dtram/languageserver/utils/TokenizerTest.java b/LanguageServer/src/test/java/org/nittalab/dtram/languageserver/utils/TokenizerTest.java index 5b3fbf1..23d3f3b 100644 --- a/LanguageServer/src/test/java/org/nittalab/dtram/languageserver/utils/TokenizerTest.java +++ b/LanguageServer/src/test/java/org/nittalab/dtram/languageserver/utils/TokenizerTest.java @@ -22,18 +22,43 @@ @Test public void test() { try (InputStream is = getClass().getResourceAsStream("/models/accounts.model")) { - assert is != null : "Couldn't get testing resource!"; + assert is != null : "Couldn't get testing resources!"; BufferedReader reader = new BufferedReader(new InputStreamReader(is)); Tokenizer tokenizer = new Tokenizer(reader); List tokens = tokenizer.execute(); -// tokens.forEach(System.out::println); } catch (IOException e) { logger.severe(e.getMessage()); } } @Test + public void splitBySpaceTest() { + String testCode = " accounts . {accountId} . name "; + Position startsAt = new Position(1, 1); + + Token token0 = new Token(" ", startsAt, true); + Token token1 = new Token(" ", token0.getEndPos().move(0, 1), true); + Token token2 = new Token("accounts", token1.getEndPos().move(0, 1), false); + Token token3 = new Token(" ", token2.getEndPos().move(0, 1), true); + Token token4 = new Token(".", token3.getEndPos().move(0, 1), false); + Token token5 = new Token(" ", token4.getEndPos().move(0, 1), true); + Token token6 = new Token("{accountId}", token5.getEndPos().move(0, 1), false); + Token token7 = new Token(" ", token6.getEndPos().move(0, 1), true); + Token token8 = new Token(".", token7.getEndPos().move(0, 1), false); + Token token9 = new Token(" ", token8.getEndPos().move(0, 1), true); + Token token10 = new Token("name", token9.getEndPos().move(0, 1), false); + Token token11 = new Token(" ", token10.getEndPos().move(0, 1), true); + Token token12 = new Token(" ", token11.getEndPos().move(0, 1), true); + ArrayList expected = new ArrayList<>(List.of(token0, token1, token2, token3, token4, token5, token6, token7, token8, token9, token10, token11, token12)); + + ArrayList actual = new ArrayList<>(List.of(new Token(testCode, startsAt, false))); + actual = Tokenizer.splitBySpace(actual); + + Assertions.assertIterableEquals(expected, actual); + } + + @Test public void splitByBracketTest() { String testCode = "accounts.{accountId}.name(name: Str, changeName(name: Str)) = name"; Position startsAt = new Position(1, 1); @@ -77,4 +102,42 @@ Assertions.assertIterableEquals(expected, actual); } + + @Test + public void splitByDotTest() { + String testCode = "accounts.{accountId}.name"; + Position startsAt = new Position(1, 1); + + Token token0 = new Token("accounts", startsAt, false); + Token token1 = new Token(".", token0.getEndPos().move(0, 1), true); + Token token2 = new Token("{accountId}", token1.getEndPos().move(0, 1), false); + Token token3 = new Token(".", token2.getEndPos().move(0, 1), true); + Token token4 = new Token("name", token3.getEndPos().move(0, 1), false); + ArrayList expected = new ArrayList<>(List.of(token0, token1, token2, token3, token4)); + + ArrayList actual = new ArrayList<>(List.of(new Token(testCode, startsAt, false))); + actual = Tokenizer.splitBySymbol(actual, Tokens.DOT, Tokens.DOT_REGX); + + Assertions.assertIterableEquals(expected, actual); + } + + @Test + public void splitByCommaTest() { + String testCode = "posts(posts: Map, post(title: Str, content: Str, likes: Int))"; + Position startsAt = new Position(1, 1); + + Token token0 = new Token("posts(posts: Map", startsAt, false); + Token token1 = new Token(",", token0.getEndPos().move(0, 1), true); + Token token2 = new Token(" post(title: Str", token1.getEndPos().move(0, 1), false); + Token token3 = new Token(",", token2.getEndPos().move(0, 1), true); + Token token4 = new Token(" content: Str", token3.getEndPos().move(0, 1), false); + Token token5 = new Token(",", token4.getEndPos().move(0, 1), true); + Token token6 = new Token(" likes: Int))", token5.getEndPos().move(0, 1), false); + ArrayList expected = new ArrayList<>(List.of(token0, token1, token2, token3, token4, token5, token6)); + + ArrayList actual = new ArrayList<>(List.of(new Token(testCode, startsAt, false))); + actual = Tokenizer.splitBySymbol(actual, Tokens.COMMA, Tokens.COMMA); + + Assertions.assertIterableEquals(expected, actual); + } }