diff --git a/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenFactory.java b/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenFactory.java
index 080959a..e2e4e8e 100644
--- a/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenFactory.java
+++ b/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenFactory.java
@@ -83,4 +83,48 @@ public interface TokenFactory {
*/
public Token makeDivideToken();
+
+ /** make a token that represents an equality operator ==
+ @return an appropriate token
+ */
+
+ public Token makeEqualsToken();
+
+ /** make a token that represents a not equals operator !=
+ @return an appropriate token
+ */
+
+ public Token makeNotEqualsToken();
+
+
+ /** make a token that represents a less than operator <
+ @return an appropriate token
+ */
+
+ public Token makeLessThanToken();
+
+ /** make a token that represents a less than or equals operator <=
+ @return an appropriate token
+ */
+
+ public Token makeLessThanOrEqualsToken();
+
+ /** make a token that represents a greater than operator >
+ @return an appropriate token
+ */
+
+ public Token makeGreaterThanToken();
+
+ /** make a token that represents a greater than or equals operator >=
+ @return an appropriate token
+ */
+
+ public Token makeGreaterThanOrEqualsToken();
+
+ /** make a token that represents an exponent operator **
+ @return an appropriate token
+ */
+
+ public Token makeExponentOperatorToken();
+
}
diff --git a/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenizerAddonsTest.java b/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenizerAddonsTest.java
new file mode 100644
index 0000000..452ee8a
--- /dev/null
+++ b/src/edu/ucsb/cs56/pconrad/parsing/tokenizer/TokenizerAddonsTest.java
@@ -0,0 +1,148 @@
+package edu.ucsb.cs56.pconrad.parsing.tokenizer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.fail;
+import org.junit.Test;
+
+public class TokenizerAddonsTest {
+
+ private TokenFactory tf = new DefaultTokenFactory();
+
+ @Test
+ public void testOneEqualsToken() {
+ assertArrayEquals(new Token[] { tf.makeEqualsToken() },
+ Tokenizer.tokenizeToArray("=="));
+ }
+
+
+ @Test
+ public void testTwoEqualsTokensWithWhiteSpace() {
+ assertArrayEquals(new Token[] {
+ tf.makeEqualsToken(),
+ tf.makeEqualsToken()
+ },
+ Tokenizer.tokenizeToArray("== =="));
+ }
+
+ @Test
+ public void testTwoEqualsTokensNoWhiteSpace() {
+ assertArrayEquals(new Token[] {
+ tf.makeEqualsToken(),
+ tf.makeEqualsToken()
+ },
+ Tokenizer.tokenizeToArray("===="));
+ }
+
+
+ @Test
+ public void testOneEqualsTokensOneErrorEqualToken() {
+ assertArrayEquals(new Token[] {
+ tf.makeEqualsToken(),
+ tf.makeErrorToken("=")
+ },
+ Tokenizer.tokenizeToArray("==="));
+ }
+
+ @Test
+ public void testEqualsExpression() {
+ assertArrayEquals(new Token[] { tf.makeIntToken("12"),
+ tf.makeEqualsToken(),
+ tf.makeIntToken("13") },
+ Tokenizer.tokenizeToArray("12 == 13"));
+ }
+
+ @Test
+ public void testNotEqualsToken() {
+ assertArrayEquals(new Token[] { tf.makeNotEqualsToken() },
+ Tokenizer.tokenizeToArray("!="));
+ }
+
+ @Test
+ public void testNotEqualsExpression() {
+ assertArrayEquals(new Token[] { tf.makeIntToken("12"),
+ tf.makeNotEqualsToken(),
+ tf.makeIntToken("13") },
+ Tokenizer.tokenizeToArray("12 != 13"));
+ }
+
+ @Test
+ public void testLeExpression() {
+ assertArrayEquals(new Token[] { tf.makeIntToken("12"),
+ tf.makeLessThanOrEqualsToken(),
+ tf.makeIntToken("13") },
+ Tokenizer.tokenizeToArray("12 <= 13"));
+ }
+
+ @Test
+ public void testLtExpression() {
+ assertArrayEquals(new Token[] { tf.makeIntToken("1"),
+ tf.makePlusToken(),
+ tf.makeIntToken("2"),
+ tf.makeLessThanToken(),
+ tf.makeIntToken("3"),
+ tf.makeTimesToken(),
+ tf.makeIntToken("4")
+ },
+ Tokenizer.tokenizeToArray("1+2<3*4"));
+ }
+
+
+ @Test
+ public void testGtExpression() {
+ assertArrayEquals(new Token[] { tf.makeIntToken("12"),
+ tf.makeGreaterThanToken(),
+ tf.makeIntToken("13") },
+ Tokenizer.tokenizeToArray("12 > 13"));
+ }
+
+ @Test
+ public void testGeExpression() {
+ assertArrayEquals(new Token[] { tf.makeLParenToken(),
+ tf.makeIntToken("78"),
+ tf.makeMinusToken(),
+ tf.makeIntToken("90"),
+ tf.makeRParenToken(),
+ tf.makeGreaterThanOrEqualsToken(),
+ tf.makeIntToken("13"),
+ tf.makeDivideToken(),
+ tf.makeIntToken("4")
+ },
+ Tokenizer.tokenizeToArray("(78-90)>=13/4"));
+ }
+
+
+ public void testExponentOperator() {
+ assertArrayEquals(new Token[] {
+ tf.makeIntToken("2"),
+ tf.makeExponentOperatorToken(),
+ tf.makeIntToken("16"),
+ },
+ Tokenizer.tokenizeToArray("2**16"));
+ }
+
+ public void testInequalityOperators() {
+ assertArrayEquals(new Token[] {
+ tf.makeLessThanToken(),
+ tf.makeLessThanOrEqualsToken(),
+ tf.makeLessThanToken(),
+ tf.makeGreaterThanToken(),
+ tf.makeLessThanOrEqualsToken(),
+ },
+ Tokenizer.tokenizeToArray("<<=<>>="));
+ }
+
+ public void brokenInequalityOperators() {
+ assertArrayEquals(new Token[] {
+ tf.makeLessThanToken(),
+ tf.makeErrorToken("="),
+ tf.makeGreaterThanToken(),
+ tf.makeErrorToken("="),
+ tf.makeEqualsToken(),
+ tf.makeErrorToken("="),
+ tf.makeErrorToken("="),
+ },
+ Tokenizer.tokenizeToArray("< = > = == = = "));
+ }
+
+}