PAN-10 Refactored direct access of fields to getter and setter methods.

This commit is contained in:
BrittanyBi
2019-03-04 22:24:27 -07:00
parent 6f5bbab5ac
commit 357e9b23cc
3 changed files with 54 additions and 54 deletions
@@ -1,13 +1,16 @@
package edu.msudenver.tsp.services.parser; package edu.msudenver.tsp.services.parser;
import lombok.Getter;
import lombok.Setter;
public class Node public class Node
{ {
String statement; @Getter private final String statement;
Node left; @Getter @Setter private Node left;
Node right; @Getter @Setter private Node right;
Node center; @Getter @Setter private Node center;
Node parent; @Getter private final Node parent;
int depth; @Getter private final int depth;
public Node(final String statement, final Node parent) public Node(final String statement, final Node parent)
{ {
@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
@Service @Service
class ParserService { class ParserService {
@@ -30,7 +31,7 @@ class ParserService {
{ {
try { try {
final Node tree = parseRawInput(userInput); final Node tree = parseRawInput(userInput);
final ArrayList<String> statements = retrieveStatements(tree); final List<String> statements = retrieveStatements(tree);
return true; return true;
} catch(final Exception e) { } catch(final Exception e) {
@@ -58,72 +59,67 @@ class ParserService {
{ {
int wordBeginsHere; int wordBeginsHere;
if(current.statement.contains("let")) if(current.getStatement().contains("let"))
{ {
current.left = new Node("let", current.setLeft(new Node("let", current));
current);
if(current.statement.contains("if")){ if(current.getStatement().contains("if")){
wordBeginsHere = current.statement.indexOf("if"); wordBeginsHere = current.getStatement().indexOf("if");
} else if(current.statement.contains("then")){ } else if(current.getStatement().contains("then")){
wordBeginsHere = current.statement.indexOf("then"); wordBeginsHere = current.getStatement().indexOf("then");
} else { } else {
wordBeginsHere = current.statement.length(); wordBeginsHere = current.getStatement().length();
} }
current.left.center = new Node(current.statement.substring(current.statement.indexOf("let")+"let".length(), current.getLeft().setCenter(new Node(current.getStatement().substring(current.getStatement().indexOf("let")+"let".length(),
wordBeginsHere), wordBeginsHere),
current.left); current.getLeft()));
recurse(current.left.center); recurse(current.getLeft().getCenter());
} }
if(current.statement.contains("if")) if(current.getStatement().contains("if"))
{ {
current.center = new Node("if", current.setCenter(new Node("if", current));
current); wordBeginsHere = (current.getStatement().contains("then") ? current.getStatement().indexOf("then") : current.getStatement().length());
wordBeginsHere = (current.statement.contains("then") ? current.statement.indexOf("then") : current.statement.length());
current.center.center = new Node(current.statement.substring(current.statement.indexOf("if")+"if".length(), current.getCenter().setCenter(new Node(current.getStatement().substring(current.getStatement().indexOf("if")+"if".length(),
wordBeginsHere), wordBeginsHere),
current.center); current.getCenter()));
recurse(current.center.center); recurse(current.getCenter().getCenter());
} }
if(current.statement.contains("then")) if(current.getStatement().contains("then"))
{ {
current.right = new Node("then", current.setRight(new Node("then", current));
current); current.getRight().setCenter(new Node(current.getStatement().substring(current.getStatement().indexOf("then")+"then".length()),
current.right.center = new Node(current.statement.substring(current.statement.indexOf("then")+"then".length()), current.getRight()));
current.right); recurse(current.getRight().getCenter());
recurse(current.right.center);
} }
} }
public ArrayList<String> retrieveStatements(final Node parsedTree) public List<String> retrieveStatements(final Node parsedTree)
{ {
final ArrayList<String> statementList = new ArrayList<>(); return populateStatementList(parsedTree, new ArrayList<>());
traverse(parsedTree, statementList);
return statementList;
} }
private ArrayList<String> traverse(final Node node, final ArrayList<String> statementList) private ArrayList<String> populateStatementList(final Node node, final ArrayList<String> statementList)
{ {
if(node == null) return statementList; if(node == null)
if(!(node.statement.contains("let") || node.statement.contains("if") || node.statement.contains("then")))
{ {
statementList.add(node.statement.trim()); return statementList;
} }
traverse(node.left, statementList); final String statement = node.getStatement().trim();
if(!(statement.contains("let") || statement.contains("if") || statement.contains("then")))
{
statementList.add(statement);
}
traverse(node.center, statementList); populateStatementList(node.getLeft(), statementList);
populateStatementList(node.getCenter(), statementList);
traverse(node.right, statementList); populateStatementList(node.getRight(), statementList);
return statementList; return statementList;
} }
@@ -7,6 +7,7 @@ import org.mockito.InjectMocks;
import org.mockito.runners.MockitoJUnitRunner; import org.mockito.runners.MockitoJUnitRunner;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@@ -102,29 +103,29 @@ public class ParserServiceTest {
@Test @Test
public void testEmptyStringReturnsEmptyList() { public void testEmptyStringReturnsEmptyList() {
final ArrayList<String> expectedList = new ArrayList<>(); final List<String> expectedList = new ArrayList<>();
expectedList.add(""); expectedList.add("");
when(mockParserService.parseRawInput(anyString())).thenReturn(new Node("", null)); when(mockParserService.parseRawInput(anyString())).thenReturn(new Node("", null));
final ArrayList<String> actualList = parserService.retrieveStatements(mockParserService.parseRawInput("")); final List<String> actualList = parserService.retrieveStatements(mockParserService.parseRawInput(""));
assertEquals(expectedList, actualList); assertEquals(expectedList, actualList);
} }
@Test @Test
public void testBaseCaseReturnsXIsEven() { public void testBaseCaseReturnsXIsEven() {
final ArrayList<String> expectedList = new ArrayList<>(); final List<String> expectedList = new ArrayList<>();
expectedList.add("x is even"); expectedList.add("x is even");
expectedList.add("x^2 is even"); expectedList.add("x^2 is even");
final Node testNode = new Node("if x is even then x^2 is even", null); final Node testNode = new Node("if x is even then x^2 is even", null);
testNode.center = new Node("if", testNode); testNode.setCenter(new Node("if", testNode));
testNode.center.center = new Node(" x is even ", testNode.center); testNode.getCenter().setCenter(new Node(" x is even ", testNode.getCenter()));
testNode.right = new Node("then", testNode); testNode.setRight(new Node("then", testNode));
testNode.right.center = new Node(" x^2 is even", testNode.right); testNode.getRight().setCenter(new Node(" x^2 is even", testNode.getRight()));
when(mockParserService.parseRawInput(anyString())).thenReturn(testNode); when(mockParserService.parseRawInput(anyString())).thenReturn(testNode);
final ArrayList<String> actualList = parserService.retrieveStatements(mockParserService.parseRawInput("baseCase")); final List<String> actualList = parserService.retrieveStatements(mockParserService.parseRawInput("baseCase"));
assertEquals(expectedList, actualList); assertEquals(expectedList, actualList);
} }