@@ -40,6 +40,22 @@ describe('DiceParser', () => {
40
40
expect ( dice . getChild ( 1 ) . type ) . toBe ( NodeType . DiceSides ) ;
41
41
expect ( dice . getChild ( 1 ) . getAttribute ( 'value' ) ) . toBe ( 6 ) ;
42
42
} ) ;
43
+ it ( 'can correctly parse a simple dice roll without roll times.' , ( ) => {
44
+ const lexer = new MockLexer ( [
45
+ new Token ( TokenType . Identifier , 0 , 'd' ) ,
46
+ new Token ( TokenType . Number , 1 , '6' )
47
+ ] ) ;
48
+ const parser = new Parser . DiceParser ( lexer ) ;
49
+ const result = new Parser . ParseResult ( ) ;
50
+ const dice = parser . parseDiceRoll ( result ) ;
51
+ expect ( result . errors . length ) . toBe ( 0 ) ;
52
+ expect ( dice . type ) . toBe ( NodeType . Dice ) ;
53
+ expect ( dice . getChildCount ( ) ) . toBe ( 2 ) ;
54
+ expect ( dice . getChild ( 0 ) . type ) . toBe ( NodeType . Number ) ;
55
+ expect ( dice . getChild ( 0 ) . getAttribute ( 'value' ) ) . toBe ( 1 ) ;
56
+ expect ( dice . getChild ( 1 ) . type ) . toBe ( NodeType . DiceSides ) ;
57
+ expect ( dice . getChild ( 1 ) . getAttribute ( 'value' ) ) . toBe ( 6 ) ;
58
+ } ) ;
43
59
it ( 'can correctly parse a simple fate dice roll' , ( ) => {
44
60
const lexer = new MockLexer ( [
45
61
new Token ( TokenType . Number , 0 , '10' ) ,
@@ -56,6 +72,21 @@ describe('DiceParser', () => {
56
72
expect ( dice . getChild ( 1 ) . type ) . toBe ( NodeType . DiceSides ) ;
57
73
expect ( dice . getChild ( 1 ) . getAttribute ( 'value' ) ) . toBe ( 'fate' ) ;
58
74
} ) ;
75
+ it ( 'can correctly parse a simple fate dice roll without roll times' , ( ) => {
76
+ const lexer = new MockLexer ( [
77
+ new Token ( TokenType . Identifier , 0 , 'dF' )
78
+ ] ) ;
79
+ const parser = new Parser . DiceParser ( lexer ) ;
80
+ const result = new Parser . ParseResult ( ) ;
81
+ const dice = parser . parseDiceRoll ( result ) ;
82
+ expect ( result . errors . length ) . toBe ( 0 ) ;
83
+ expect ( dice . type ) . toBe ( NodeType . Dice ) ;
84
+ expect ( dice . getChildCount ( ) ) . toBe ( 2 ) ;
85
+ expect ( dice . getChild ( 0 ) . type ) . toBe ( NodeType . Number ) ;
86
+ expect ( dice . getChild ( 0 ) . getAttribute ( 'value' ) ) . toBe ( 1 ) ;
87
+ expect ( dice . getChild ( 1 ) . type ) . toBe ( NodeType . DiceSides ) ;
88
+ expect ( dice . getChild ( 1 ) . getAttribute ( 'value' ) ) . toBe ( 'fate' ) ;
89
+ } ) ;
59
90
it ( 'can correctly parse a dice roll with a bracketed number' , ( ) => {
60
91
const lexer = new MockLexer ( [
61
92
new Token ( TokenType . ParenthesisOpen , 0 , '(' ) ,
@@ -100,17 +131,6 @@ describe('DiceParser', () => {
100
131
expect ( dice . getChild ( 1 ) . type ) . toBe ( NodeType . DiceSides ) ;
101
132
expect ( dice . getChild ( 1 ) . getAttribute ( 'value' ) ) . toBe ( 6 ) ;
102
133
} ) ;
103
- it ( 'throws on missing roll times' , ( ) => {
104
- const lexer = new MockLexer ( [
105
- new Token ( TokenType . Identifier , 0 , 'd' ) ,
106
- new Token ( TokenType . Number , 1 , '10' )
107
- ] ) ;
108
- const parser = new Parser . DiceParser ( lexer ) ;
109
-
110
- const result = new Parser . ParseResult ( ) ;
111
- const dice = parser . parseDiceRoll ( result ) ;
112
- expect ( result . errors . length ) . toBeGreaterThanOrEqual ( 1 ) ;
113
- } ) ;
114
134
it ( 'throws on missing dice value' , ( ) => {
115
135
const lexer = new MockLexer ( [
116
136
new Token ( TokenType . Number , 0 , '6' ) ,
0 commit comments