m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/__tests__/parser.test.js
diff options
context:
space:
mode:
Diffstat (limited to '__tests__/parser.test.js')
-rw-r--r--__tests__/parser.test.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/__tests__/parser.test.js b/__tests__/parser.test.js
new file mode 100644
index 0000000..004e18b
--- /dev/null
+++ b/__tests__/parser.test.js
@@ -0,0 +1,35 @@
+const { parse } = require('../src/parser.js')
+
+describe('parse', () => {
+ it('parses a constant', () => {
+ expect(parse('5')).toEqual({ type: 'constant', value: 5 })
+ })
+
+ it('parses a simple die (1d6)', () => {
+ expect(parse('1d6')).toEqual({
+ type: 'd',
+ left: { type: 'constant', value: 1 },
+ right: { type: 'constant', value: 6 }
+ })
+ })
+
+ it('parses a simple die (10d42)', () => {
+ expect(parse('10d42')).toEqual({
+ type: 'd',
+ left: { type: 'constant', value: 10 },
+ right: { type: 'constant', value: 42 }
+ })
+ })
+
+ it('parses a compound die (1d2d3)', () => {
+ expect(parse('1d2d3')).toEqual({
+ type: 'd',
+ left: { type: 'constant', value: 1 },
+ right: {
+ type: 'd',
+ left: { type: 'constant', value: 2 },
+ right: { type: 'constant', value: 3 }
+ }
+ })
+ })
+})