From ee9a05d3c4fbdcb34777ae75a9ae1499b1098add Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com>
Date: Tue, 22 Aug 2017 15:15:07 -0400
Subject: Change arithmetic lexing

- Rename tokens from symbols ('+', '-'), to words
- Differentiate between symbols with and without surrounding whitespace
- Update parser to work with new token names
---
 __tests__/lexer.test.js  | 14 +++++++-------
 __tests__/parser.test.js |  4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

(limited to '__tests__')

diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js
index 04a95e1..76cb421 100644
--- a/__tests__/lexer.test.js
+++ b/__tests__/lexer.test.js
@@ -55,7 +55,7 @@ describe('lex', () => {
         { type: 'constant', value: 1 },
         { type: 'd' },
         { type: 'constant', value: 6 },
-        { type: '+' },
+        { type: 'bigPlus' },
         { type: 'constant', value: 1 },
         { type: 'd' },
         { type: 'constant', value: 4 }
@@ -67,7 +67,7 @@ describe('lex', () => {
         { type: 'constant', value: 2 },
         { type: 'd' },
         { type: 'constant', value: 17 },
-        { type: '+' },
+        { type: 'bigPlus' },
         { type: 'constant', value: 4 }
       ])
     })
@@ -79,7 +79,7 @@ describe('lex', () => {
         { type: 'constant', value: 1 },
         { type: 'd' },
         { type: 'constant', value: 6 },
-        { type: '-' },
+        { type: 'bigMinus' },
         { type: 'constant', value: 1 },
         { type: 'd' },
         { type: 'constant', value: 4 }
@@ -91,7 +91,7 @@ describe('lex', () => {
         { type: 'constant', value: 2 },
         { type: 'd' },
         { type: 'constant', value: 17 },
-        { type: '-' },
+        { type: 'bigMinus' },
         { type: 'constant', value: 4 }
       ])
     })
@@ -110,13 +110,13 @@ describe('lex', () => {
       ])
     })
 
-    it('2d(6+3)d4', () => {
-      expect(lex('2d(6+3)d4')).toEqual([
+    it('2d(6 + 3)d4', () => {
+      expect(lex('2d(6 + 3)d4')).toEqual([
         { type: 'constant', value: 2 },
         { type: 'd' },
         { type: '(' },
         { type: 'constant', value: 6 },
-        { type: '+' },
+        { type: 'bigPlus' },
         { type: 'constant', value: 3 },
         { type: ')' },
         { type: 'd' },
diff --git a/__tests__/parser.test.js b/__tests__/parser.test.js
index fb554f9..bc88894 100644
--- a/__tests__/parser.test.js
+++ b/__tests__/parser.test.js
@@ -152,8 +152,8 @@ describe('parse', () => {
       })
     })
 
-    test('2d(6+3)d4', () => {
-      expect(parse('2d(6+3)d4')).toEqual({
+    test('2d(6 + 3)d4', () => {
+      expect(parse('2d(6 + 3)d4')).toEqual({
         type: 'd',
         left: { type: 'constant', value: 2 },
         right: {
-- 
cgit v1.2.3


From b84fe7672ad62a7e507b10704fbbd216afaaff44 Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com>
Date: Tue, 22 Aug 2017 15:19:12 -0400
Subject: Stop ignoring whitespace

---
 __tests__/lexer.test.js | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

(limited to '__tests__')

diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js
index 76cb421..12835df 100644
--- a/__tests__/lexer.test.js
+++ b/__tests__/lexer.test.js
@@ -10,24 +10,24 @@ describe('lex', () => {
   })
 
   it('throws on unexpected input at the end', () => {
-    expect(() => { lex('1d6 `') }).toThrow(/Syntax error/)
+    expect(() => { lex('1d6`') }).toThrow(/Syntax error/)
   })
 
   it('throws on unexpected input in the middle', () => {
-    expect(() => { lex('2d3 + b 3d4') }).toThrow(/Syntax error/)
+    expect(() => { lex('2d3 + b3d4') }).toThrow(/Syntax error/)
   })
 
-  describe('ignores whitespace', () => {
+  describe('throws on unexpected whitespace', () => {
     it('2 d 4', () => {
-      expect(lex('2 d 4')).not.toBe('error')
+      expect(() => { lex('2 d 4') }).toThrow(/Syntax error/)
     })
 
     it('   1d8', () => {
-      expect(lex('   1d8')).not.toBe('error')
+      expect(() => { lex('   1d8') }).toThrow(/Syntax error/)
     })
 
     it('3d4   ', () => {
-      expect(lex('3d4   ')).not.toBe('error')
+      expect(() => { lex('3d4   ') }).toThrow(/Syntax error/)
     })
   })
 
-- 
cgit v1.2.3


From 034d62f90d9c748f38209991c812692e5a99bbd9 Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com>
Date: Tue, 22 Aug 2017 15:19:32 -0400
Subject: Add test for lexing negatives

---
 __tests__/lexer.test.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)

(limited to '__tests__')

diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js
index 12835df..6900764 100644
--- a/__tests__/lexer.test.js
+++ b/__tests__/lexer.test.js
@@ -125,6 +125,19 @@ describe('lex', () => {
     })
   })
 
+  describe('lexes negatives', () => {
+    it('-(1d6)', () => {
+      expect(lex('-(1d6)')).toEqual([
+        { type: 'minus' },
+        { type: '(' },
+        { type: 'constant', value: 1 },
+        { type: 'd' },
+        { type: 'constant', value: 6 },
+        { type: ')' }
+      ])
+    })
+  })
+
   describe('exploding dice', () => {
     test('1E1d6', () => {
       expect(lex('1E1d6')).toEqual([
-- 
cgit v1.2.3