@@ -75,7 +75,7 @@ Variables can be used inside expressions with `Interpreter.SetVariable` method:
75
75
``` csharp
76
76
var target = new Interpreter ().SetVariable (" myVar" , 23 );
77
77
78
- Assert .AreEqual ( 23 , target .Eval (" myVar" ));
78
+ Assert .That ( target .Eval (" myVar" ), Is . EqualTo ( 23 ));
79
79
```
80
80
Variables can be primitive types or custom complex types (classes, structures, delegates, arrays, collections, ...).
81
81
@@ -84,7 +84,7 @@ Custom functions can be passed with delegate variables using `Interpreter.SetFun
84
84
Func < double , double , double > pow = (x , y ) => Math .Pow (x , y );
85
85
var target = new Interpreter ().SetFunction (" pow" , pow );
86
86
87
- Assert .AreEqual ( 9 . 0 , target .Eval (" pow(3, 2)" ));
87
+ Assert .That ( target .Eval (" pow(3, 2)" ), Is . EqualTo ( 9 . 0 ));
88
88
```
89
89
Custom [ Expression] ( http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.aspx ) can be passed by using ` Interpreter.SetExpression ` method.
90
90
@@ -99,7 +99,7 @@ var parameters = new[] {
99
99
new Parameter (" y" , 7 )
100
100
};
101
101
102
- Assert .AreEqual ( 30 , interpreter .Eval (" x + y" , parameters ));
102
+ Assert .That ( interpreter .Eval (" x + y" , parameters ), Is . EqualTo ( 30 ));
103
103
```
104
104
Parameters can be primitive types or custom types. You can parse an expression once and invoke it multiple times with different parameter values:
105
105
``` csharp
@@ -112,8 +112,8 @@ var parameters = new[] {
112
112
113
113
var myFunc = target .Parse (" x + y" , parameters );
114
114
115
- Assert .AreEqual ( 30 , myFunc .Invoke (23 , 7 ));
116
- Assert .AreEqual ( 30 , myFunc .Invoke (32 , - 2 ));
115
+ Assert .That ( myFunc .Invoke (23 , 7 ), Is . EqualTo ( 30 ));
116
+ Assert .That ( myFunc .Invoke (32 , - 2 ), Is . EqualTo ( 30 ));
117
117
```
118
118
119
119
### Special identifiers
@@ -129,10 +129,10 @@ var target = new Interpreter();
129
129
target .SetVariable (" this" , new Customer { Name = " John" });
130
130
131
131
// explicit context reference via 'this' variable
132
- Assert .AreEqual ( " John " , target .Eval (" this.Name" ));
132
+ Assert .That ( target .Eval (" this.Name" ), Is . EqualTo ( " John " ));
133
133
134
134
// 'this' variable is referenced implicitly
135
- Assert .AreEqual ( " John " , target . Eval ( " Name " ));
135
+ Assert .That ( target . Eval ( " Name " ), Is . EqualTo ( " John " ));
136
136
```
137
137
138
138
### Built-in types and custom types
@@ -153,8 +153,8 @@ You can reference any other custom .NET type by using `Interpreter.Reference` me
153
153
``` csharp
154
154
var target = new Interpreter ().Reference (typeof (Uri ));
155
155
156
- Assert .AreEqual ( typeof (Uri ), target . Eval ( " typeof(Uri)" ));
157
- Assert .AreEqual ( Uri .UriSchemeHttp , target . Eval ( " Uri.UriSchemeHttp" ));
156
+ Assert .That ( target . Eval ( " typeof(Uri)" ), Is . EqualTo ( typeof (Uri )));
157
+ Assert .That ( target . Eval ( " Uri.UriSchemeHttp" ), Is . EqualTo ( Uri .UriSchemeHttp ));
158
158
```
159
159
160
160
### Generate dynamic delegates
@@ -184,7 +184,7 @@ public void Linq_Where()
184
184
var interpreter = new Interpreter ();
185
185
Func < Customer , bool > dynamicWhere = interpreter .ParseAsDelegate <Func <Customer , bool >>(whereExpression , " customer" );
186
186
187
- Assert .AreEqual ( 1 , customers .Where (dynamicWhere ).Count ());
187
+ Assert .That ( customers .Where (dynamicWhere ).Count (), Is . EqualTo ( 1 ));
188
188
}
189
189
```
190
190
This is the preferred way to parse an expression that you known at compile time what parameters can accept and what value must return.
@@ -217,7 +217,7 @@ public void Linq_Queryable_Expression_Where()
217
217
var interpreter = new Interpreter ();
218
218
Expression < Func < Customer , bool >> expression = interpreter .ParseAsExpression <Func <Customer , bool >>(whereExpression , " customer" );
219
219
220
- Assert .AreEqual ( 1 , customers .Where (expression ).Count ());
220
+ Assert .That ( customers .Where (expression ).Count (), Is . EqualTo ( 1 ));
221
221
}
222
222
```
223
223
@@ -332,18 +332,18 @@ var target = new Interpreter()
332
332
.SetVariable (" x" , service )
333
333
.SetVariable (" this" , context );
334
334
335
- Assert .AreEqual ( service . HelloWorld (), target . Eval ( " x .HelloWorld()" ));
336
- Assert .AreEqual ( service . AProperty , target .Eval (" x.AProperty" ));
337
- Assert .AreEqual ( service . AField , target .Eval (" x.AField" ));
335
+ Assert .That ( target . Eval ( " x. HelloWorld()" ), Is . EqualTo ( service .HelloWorld ()));
336
+ Assert .That ( target .Eval (" x.AProperty" ), Is . EqualTo ( service . AProperty ));
337
+ Assert .That ( target .Eval (" x.AField" ), Is . EqualTo ( service . AField ));
338
338
339
339
// implicit context reference
340
- Assert .AreEqual ( context . GetContextId (), target . Eval ( " GetContextId()" ));
341
- Assert .AreEqual ( context . ContextName , target .Eval (" ContextName" ));
342
- Assert .AreEqual ( context . ContextField , target .Eval (" ContextField" ));
340
+ Assert .That ( target . Eval ( " GetContextId()" ), Is . EqualTo ( context . GetContextId ()));
341
+ Assert .That ( target .Eval (" ContextName" ), Is . EqualTo ( context . ContextName ));
342
+ Assert .That ( target .Eval (" ContextField" ), Is . EqualTo ( context . ContextField ));
343
343
```
344
344
``` csharp
345
345
var target = new Interpreter ();
346
- Assert .AreEqual ( new DateTime (2015 , 1 , 24 ), target . Eval ( " new DateTime(2015, 1, 24) " ));
346
+ Assert .That ( target . Eval ( " new DateTime(2015, 1, 24)" ), Is . EqualTo ( new DateTime (2015 , 1 , 24 ));
347
347
```
348
348
Dynamic Expresso also supports :
349
349
@@ -353,7 +353,7 @@ var x = new int[] { 10, 30, 4 };
353
353
var target = new Interpreter ()
354
354
.Reference (typeof (System .Linq .Enumerable ))
355
355
.SetVariable (" x" , x );
356
- Assert .AreEqual ( x .Count (), target . Eval ( " x.Count()" ));
356
+ Assert .That ( target . Eval ( " x.Count()" ), Is . EqualTo ( x .Count ()));
357
357
```
358
358
- Indexer methods (like `array [0 ]`)
359
359
- Generics , only partially supported (only implicit , you cannot invoke an explicit generic method )
@@ -369,7 +369,7 @@ var target = new Interpreter(options)
369
369
.SetVariable (" x" , x );
370
370
371
371
var results = target .Eval <IEnumerable <string >>(" x.Where(str => str.Length > 5).Select(str => str.ToUpper())" );
372
- Assert .AreEqual ( new [] { " AWESOME" }, results );
372
+ Assert .That ( results , Is . EqualTo ( new [] { " AWESOME" }) );
373
373
```
374
374
375
375
Note that parsing lambda expressions is disabled by default , because it has a slight performance cost .
@@ -383,7 +383,7 @@ var target = new Interpreter(options)
383
383
.SetVariable (" increment" , 3 ); // access a variable from the lambda expression
384
384
385
385
var myFunc = target .Eval <Func <int , string , string >>(" (i, str) => str.ToUpper() + (i + increment)" );
386
- Assert .AreEqual ( " TEST8 " , lambda .Invoke (5 , " test" ));
386
+ Assert .That ( lambda .Invoke (5 , " test" ), Is . EqualTo ( " TEST8 " ));
387
387
```
388
388
389
389
### Case sensitive/insensitive
@@ -397,8 +397,8 @@ var parameters = new[] {
397
397
new Parameter (" x" , x .GetType (), x )
398
398
};
399
399
400
- Assert .AreEqual ( x , target .Eval (" x" , parameters ));
401
- Assert .AreEqual ( x , target .Eval (" X" , parameters ));
400
+ Assert .That ( target .Eval (" x" , parameters ), Is . EqualTo ( x ));
401
+ Assert .That ( target .Eval (" X" , parameters ), Is . EqualTo ( x ));
402
402
```
403
403
404
404
@@ -414,8 +414,8 @@ var target = new Interpreter();
414
414
415
415
var detectedIdentifiers = target .DetectIdentifiers (" x + y" );
416
416
417
- CollectionAssert . AreEqual ( new [] { " x " , " y " } ,
418
- detectedIdentifiers . UnknownIdentifiers . ToArray () );
417
+ Assert . That ( detectedIdentifiers . UnknownIdentifiers ,
418
+ Is . EqualTo ( new [] { " x " , " y " } );
419
419
```
420
420
421
421
## Default number type
@@ -430,8 +430,8 @@ var target = new Interpreter();
430
430
431
431
target .SetDefaultNumberType (DefaultNumberType .Decimal );
432
432
433
- Assert .IsInstanceOf ( typeof ( System . Decimal ), target .Eval (" 45" ));
434
- Assert .AreEqual ( 10 M / 3 M , target .Eval (" 10/3" )); // 3.33333333333 instead of 3
433
+ Assert .That ( target .Eval (" 45" ), Is . InstanceOf < System . Decimal >( ));
434
+ Assert .That ( target .Eval (" 10/3" ), Is . EqualTo ( 10 M / 3 M )); // 3.33333333333 instead of 3
435
435
```
436
436
437
437
## Limitations
0 commit comments