diff --git a/services/src/main/java/edu/msudenver/tsp/services/parser/ParserConfig.java b/services/src/main/java/edu/msudenver/tsp/services/parser/ParserConfig.java deleted file mode 100644 index eb1c4f2..0000000 --- a/services/src/main/java/edu/msudenver/tsp/services/parser/ParserConfig.java +++ /dev/null @@ -1,11 +0,0 @@ -package edu.msudenver.tsp.services.parser; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ComponentScan -//@PropertySource("classpath:development.properties") -public class ParserConfig { - -} diff --git a/services/src/main/java/edu/msudenver/tsp/services/parser/ParserService.java b/services/src/main/java/edu/msudenver/tsp/services/parser/ParserService.java index ca24a9b..4bf6e49 100644 --- a/services/src/main/java/edu/msudenver/tsp/services/parser/ParserService.java +++ b/services/src/main/java/edu/msudenver/tsp/services/parser/ParserService.java @@ -29,7 +29,7 @@ class ParserService { public void driveParsingProcess(final String userInput) { final Node tree; - ArrayList statements = new ArrayList<>(); + final ArrayList statements; tree = parseRawInput(userInput); statements = retrieveStatements(tree); @@ -41,6 +41,12 @@ class ParserService { // convert to the same case for easier processing input = input.toLowerCase(); + // eliminate periods at the end of the input + /*if(input.charAt(input.length()-1) == '.') + { + input.substring(0, input.length()-1); + }*/ + root = new Node(input, null); // special case: nothing is submitted @@ -49,12 +55,6 @@ class ParserService { return root; } - // eliminate periods at the end of the input - if(input.charAt(input.length()-1) == '.') - { - input = input.substring(0, input.length()-1); - } - recurse(root); return root; @@ -68,7 +68,14 @@ class ParserService { { current.left = new Node("let", current); - iContain = (current.statement.contains("if") ? current.statement.indexOf("if") : current.statement.length()); + + if(current.statement.contains("if")){ + iContain = current.statement.indexOf("if"); + } else if(current.statement.contains("then")){ + iContain = current.statement.indexOf("then"); + } else { + iContain = current.statement.length(); + } current.left.center = new Node(current.statement.substring(current.statement.indexOf("let")+3, iContain), @@ -102,9 +109,9 @@ class ParserService { public ArrayList retrieveStatements(final Node parsedTree) { - ArrayList statementList = new ArrayList<>(); + final ArrayList statementList = new ArrayList<>(); - statementList = traverse(parsedTree, statementList); + traverse(parsedTree, statementList); return statementList; } diff --git a/services/src/test/java/edu/msudenver/tsp/services/parser/ParserServiceTest.java b/services/src/test/java/edu/msudenver/tsp/services/parser/ParserServiceTest.java index 0d007c8..e2d32ed 100644 --- a/services/src/test/java/edu/msudenver/tsp/services/parser/ParserServiceTest.java +++ b/services/src/test/java/edu/msudenver/tsp/services/parser/ParserServiceTest.java @@ -53,13 +53,50 @@ public class ParserServiceTest { assertEquals(expected, ps.parseRawInput(testCase).toString()); } + @Test + public void testLetXBeEvenThenXSquaredIsEven() { + final String expected = "0: let x be even. then x^2 is even.\n" + + "... 1: let\n" + + "... 2: x be even. \n" + + "... 1: then\n" + + "... 2: x^2 is even.\n\n"; + + final String testCase = "Let x be even. Then x^2 is even."; + + assertEquals(expected, ps.parseRawInput(testCase).toString()); + } + + @Test + public void testLetIfThen() { + final String expected = "0: let a. if b, then c.\n" + + "... 1: let\n" + + "... 2: a. \n" + + "... 1: if\n" + + "... 2: b, \n" + + "... 1: then\n" + + "... 2: c.\n\n"; + + final String testCase = "Let a. If b, then c."; + + assertEquals(expected, ps.parseRawInput(testCase).toString()); + } + + @Test + public void testLetAlone() { + final String expected = "0: let a be equal to b.\n" + + "... 1: let\n" + + "... 2: a be equal to b.\n\n"; + + final String testCase = "Let a be equal to b."; + + assertEquals(expected, ps.parseRawInput(testCase).toString()); + } + @Test public void testEmptyStringReturnsEmptyList() { final ArrayList expectedList = new ArrayList<>(); expectedList.add(""); - - when(mps.parseRawInput(anyString())).thenReturn(new Node("", null)); assertEquals(expectedList, ps.retrieveStatements(mps.parseRawInput(""))); @@ -80,4 +117,14 @@ public class ParserServiceTest { assertEquals(expectation, ps.retrieveStatements(mps.parseRawInput("baseCase"))); } + + @Test + public void testDriveParsingProcess() { + mps.root = new Node("", null); + final ArrayList testdummy = new ArrayList<>(); + when(mps.parseRawInput(anyString())).thenReturn(mps.root); + when(mps.retrieveStatements(mps.root)).thenReturn(testdummy); + + ps.driveParsingProcess(""); + } } \ No newline at end of file