11using System ;
2- using System . Collections . Generic ;
3- using System . IO ;
4- using System . Linq ;
5- using System . Text ;
6- using System . Threading . Tasks ;
72using NFluent ;
83using ReClassNET . AddressParser ;
94using Xunit ;
@@ -12,77 +7,39 @@ namespace ReClass.NET_Tests.AddressParser
127{
138 public class ParserTest
149 {
15- private class TokenizerStub : ITokenizer
16- {
17- private readonly Tuple < Token , string , long > [ ] values ;
18-
19- private int index = 0 ;
20-
21- public Token Token => values [ index ] . Item1 ;
22- public string Identifier => values [ index ] . Item2 ;
23- public long Number => values [ index ] . Item3 ;
24-
25- public TokenizerStub ( params Tuple < Token , string , long > [ ] values )
26- {
27- this . values = values
28- . Append ( Tuple . Create < Token , string , long > ( Token . None , null , 0 ) )
29- . ToArray ( ) ;
30- }
31-
32- public void ReadNextToken ( )
33- {
34- if ( index < values . Length - 1 )
35- {
36- ++ index ;
37- }
38- }
39- }
40-
41- public static IEnumerable < object [ ] > InvalidExpressionData ( )
42- {
43- return new List < object [ ] >
44- {
45- new object [ ] { new TokenizerStub ( ) } ,
46- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . Add , "" , 0L ) ) } ,
47- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . Subtract , "" , 0L ) ) } ,
48- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . Multiply , "" , 0L ) ) } ,
49- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . Divide , "" , 0L ) ) } ,
50- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . Comma , "" , 0L ) ) } ,
51- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . OpenParenthesis , "" , 0L ) ) } ,
52- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . CloseParenthesis , "" , 0L ) ) } ,
53- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . OpenBrackets , "" , 0L ) ) } ,
54- new object [ ] { new TokenizerStub ( Tuple . Create ( Token . CloseBrackets , "" , 0L ) ) } ,
55-
56- new object [ ] { new TokenizerStub (
57- Tuple . Create ( Token . Number , "" , 0L ) ,
58- Tuple . Create ( Token . Subtract , "" , 0L )
59- ) } ,
60- new object [ ] { new TokenizerStub (
61- Tuple . Create ( Token . Number , "" , 0L ) ,
62- Tuple . Create ( Token . OpenParenthesis , "" , 0L )
63- ) } ,
64- new object [ ] { new TokenizerStub (
65- Tuple . Create ( Token . Number , "" , 0L ) ,
66- Tuple . Create ( Token . CloseParenthesis , "" , 0L )
67- ) } ,
68- new object [ ] { new TokenizerStub (
69- Tuple . Create ( Token . OpenParenthesis , "" , 0L ) ,
70- Tuple . Create ( Token . CloseParenthesis , "" , 0L )
71- ) } ,
72- new object [ ] { new TokenizerStub (
73- Tuple . Create ( Token . OpenParenthesis , "" , 0L ) ,
74- Tuple . Create ( Token . Number , "" , 0L )
75- ) } ,
76- } ;
77- }
78-
7910 [ Theory ]
80- [ MemberData ( nameof ( InvalidExpressionData ) ) ]
81- public void InvalidExpressionTests ( ITokenizer tokenizer )
11+ [ InlineData ( "-" ) ]
12+ [ InlineData ( "+" ) ]
13+ [ InlineData ( "*" ) ]
14+ [ InlineData ( "/" ) ]
15+ [ InlineData ( "," ) ]
16+ [ InlineData ( "(" ) ]
17+ [ InlineData ( ")" ) ]
18+ [ InlineData ( "[" ) ]
19+ [ InlineData ( "]" ) ]
20+ [ InlineData ( "1-" ) ]
21+ [ InlineData ( "1(" ) ]
22+ [ InlineData ( "1)" ) ]
23+ [ InlineData ( "1[" ) ]
24+ [ InlineData ( "1]" ) ]
25+ [ InlineData ( "(1" ) ]
26+ [ InlineData ( ")1" ) ]
27+ [ InlineData ( "[1" ) ]
28+ [ InlineData ( "]1" ) ]
29+ [ InlineData ( "1+(" ) ]
30+ [ InlineData ( "1+)" ) ]
31+ [ InlineData ( "1 + ()" ) ]
32+ [ InlineData ( "(1 + 2" ) ]
33+ [ InlineData ( "1 + 2)" ) ]
34+ [ InlineData ( "[1 + 2)" ) ]
35+ [ InlineData ( "(1 + 2]" ) ]
36+ [ InlineData ( "[1,]" ) ]
37+ [ InlineData ( "[1," ) ]
38+ [ InlineData ( "1," ) ]
39+ [ InlineData ( "1,2" ) ]
40+ public void InvalidExpressionTests ( string expression )
8241 {
83- var parser = new Parser ( tokenizer ) ;
84-
85- Check . ThatCode ( ( ) => parser . ParseExpression ( ) ) . Throws < ParseException > ( ) ;
42+ Check . ThatCode ( ( ) => Parser . Parse ( expression ) ) . Throws < ParseException > ( ) ;
8643 }
8744
8845 [ Theory ]
@@ -94,10 +51,7 @@ public void InvalidExpressionTests(ITokenizer tokenizer)
9451 [ InlineData ( "(1 + (2 * 3))" , typeof ( AddExpression ) ) ]
9552 public void ValidExpressionTests ( string expression , Type type )
9653 {
97- var tokenizer = new Tokenizer ( new StringReader ( expression ) ) ;
98- var parser = new Parser ( tokenizer ) ;
99-
100- Check . That ( parser . ParseExpression ( ) ) . IsInstanceOfType ( type ) ;
54+ Check . That ( Parser . Parse ( expression ) ) . IsInstanceOfType ( type ) ;
10155 }
10256 }
10357}
0 commit comments