Skip to content

Character and Book Reader #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
44 changes: 44 additions & 0 deletions src/main/java/io/zipcoder/ParenChecker.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,48 @@
package io.zipcoder;

import java.util.Stack;

public class ParenChecker {

private Stack charStack;

ParenChecker(Stack charStack) {
this.charStack = charStack;
}

public boolean logicChecker() {
return (logic('(', ')')) &&
logic('{', '}') &&
logic('[', ']') &&
logic('<', '>') &&
quoteCounter('\"') &&
quoteCounter('\'');
}

private boolean logic(char firstChar, char secondChar) {
int parenCount = 0;
for (Object aCharStack : charStack) {
if (parenCount < 0) {
return false;
}
if (aCharStack.equals(firstChar)) {
parenCount++;
}
if (aCharStack.equals(secondChar)) {
parenCount--;
}
}
return parenCount == 0;
}

public boolean quoteCounter(char quote) {
int quoteCount = 0;
for (Object aCharStack : charStack) {
if (aCharStack.equals(quote)) {
quoteCount++;
}
}
return quoteCount % 2 == 0;
}

}
39 changes: 34 additions & 5 deletions src/main/java/io/zipcoder/WC.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,52 @@
package io.zipcoder;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;

public class WC {
private Iterator<String> si;

// private Iterator<String> si;
private String entireFile;// = WC.class.getResource("someTextFile.txt").getFile();

// Nullary constructor for testing
public WC(){}

public WC(String fileName) {
try {
this.si = new Scanner(new FileReader(fileName));
// NOTED OUT TEMPORARILY BECAUSE AM DINGUS
//this.si = new Scanner(new FileReader(fileName));
this.entireFile = new Scanner(new File(WC.class.getResource("/someTextFile.txt").getFile())).useDelimiter("\\A").next();
} catch (FileNotFoundException e) {
System.out.println(fileName + " Does Not Exist");
System.exit(-1);
}
}

public WC(Iterator<String> si) {
this.si = si;
// public WC(Iterator<String> si) {
// this.si = si;
// }

public void logic() {
HashMap<String, Integer> wordsAndAmounts = new HashMap<String, Integer>();
String[] arrayOfWords = entireFile.split("\\s+");
for (String arrayOfWord : arrayOfWords) {
String currentWord = arrayOfWord;
currentWord = wordCleaner(currentWord);
int count = wordsAndAmounts.containsKey(currentWord) ? wordsAndAmounts.get(currentWord) : 0;
wordsAndAmounts.put(currentWord, count + 1);
}
// Print out all words next to how many times they appear
for (String name : wordsAndAmounts.keySet()){
String value = wordsAndAmounts.get(name).toString();
System.out.println(name + " " + value);
}
}

private String wordCleaner(String word) {
return word.replaceAll("[^a-zA-Z ]", "").toLowerCase();
}

}
4 changes: 4 additions & 0 deletions src/main/resources/someTextFile.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Here is some text.
There will be words that are repeated.
This is one of them.
This lab was fun but now I do not know what to do.
134 changes: 134 additions & 0 deletions src/test/java/io/zipcoder/ParenCheckerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,140 @@
import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Stack;

public class ParenCheckerTest {

@Test
public void parenthesisChecker1() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('(');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add(')');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

@Test
public void parenthesisChecker2() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('(');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add(')');
charArrayList.add(')');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(!(parenChecker.logicChecker()));
}

@Test
public void parenthesisChecker3() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add(')');
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('(');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add(')');
charArrayList.add(')');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(!(parenChecker.logicChecker()));
}

@Test
public void curlyBracketChecker() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('{');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add('}');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

@Test
public void bracketChecker() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('[');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add(']');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

@Test
public void diamondChecker() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('[');
charArrayList.add('f');
charArrayList.add('<');
charArrayList.add(']');
charArrayList.add('>');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

@Test
public void doubleQuoteChecker() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('"');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add('"');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

@Test
public void singleQuoteChecker() {
Stack stack = new Stack();
ArrayList charArrayList = new ArrayList();
charArrayList.add('1');
charArrayList.add('d');
charArrayList.add('\'');
charArrayList.add('f');
charArrayList.add('(');
charArrayList.add('\'');
charArrayList.add(')');
stack.addAll(charArrayList);
ParenChecker parenChecker = new ParenChecker(stack);
Assert.assertTrue(parenChecker.logicChecker());
}

}
39 changes: 37 additions & 2 deletions src/test/java/io/zipcoder/WCTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,44 @@
import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

public class WCTest {

// Bask in glory
@Test
public void printWC() {
WC wc = new WC(WC.class.getResource("/someTextFile.txt").getFile());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
System.setOut(new PrintStream(outputStream));
wc.logic();
Assert.assertEquals("here 1\n" +
"but 1\n" +
"some 1\n" +
"be 1\n" +
"do 2\n" +
"lab 1\n" +
"repeated 1\n" +
"that 1\n" +
"not 1\n" +
"are 1\n" +
"of 1\n" +
"now 1\n" +
"text 1\n" +
"will 1\n" +
"one 1\n" +
"words 1\n" +
"this 2\n" +
"was 1\n" +
"i 1\n" +
"is 2\n" +
"them 1\n" +
"what 1\n" +
"there 1\n" +
"know 1\n" +
"to 1\n" +
"fun 1\n", outputStream.toString());
}

}