Skip to content

Commit 85ee127

Browse files
committed
Test for indexing assignation
1 parent a5b6b4c commit 85ee127

File tree

6 files changed

+99
-19
lines changed

6 files changed

+99
-19
lines changed

CodingSeb.ExpressionEvaluator.Tests/CodingSeb.ExpressionEvaluator.Tests.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
<WarningLevel>4</WarningLevel>
4141
</PropertyGroup>
4242
<ItemGroup>
43+
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
44+
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
45+
</Reference>
4346
<Reference Include="nunit.framework, Version=3.10.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
4447
<HintPath>..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll</HintPath>
4548
</Reference>
@@ -107,6 +110,9 @@
107110
<ItemGroup>
108111
<None Include="Resources\Script0010.txt" />
109112
</ItemGroup>
113+
<ItemGroup>
114+
<None Include="Resources\Script0011.txt" />
115+
</ItemGroup>
110116
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
111117
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
112118
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorScriptEvaluateTests.cs

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Text.RegularExpressions;
55
using Should;
6+
using Newtonsoft.Json;
67

78
namespace CodingSeb.ExpressionEvaluator.Tests
89
{
@@ -370,7 +371,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
370371
new Action(() => evaluator0001.Variables["x"].ShouldEqual(5)),
371372
new Action(() => evaluator0001.Variables["x"].ShouldEqual(3)))
372373
.SetCategory("Script")
373-
.SetCategory("Variable Assignation assignation")
374+
.SetCategory("Variable assignation")
374375
.SetCategory("=")
375376
.Returns(3);
376377

@@ -379,7 +380,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
379380
new Action(() => evaluator0001.Variables.ContainsKey("y").ShouldBeFalse()),
380381
new Action(() => evaluator0001.Variables["y"].ShouldEqual(20)))
381382
.SetCategory("Script")
382-
.SetCategory("Variable Assignation assignation")
383+
.SetCategory("Variable assignation")
383384
.SetCategory("=")
384385
.Returns(20);
385386

@@ -397,7 +398,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
397398
new Action(() => evaluator0002.Variables["x"].ShouldEqual(5)),
398399
new Action(() => evaluator0002.Variables["x"].ShouldEqual(9)))
399400
.SetCategory("Script")
400-
.SetCategory("Variable Assignation assignation")
401+
.SetCategory("Variable assignation")
401402
.SetCategory("+=")
402403
.Returns(9);
403404

@@ -406,7 +407,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
406407
new Action(() => evaluator0002.Variables["text"].ShouldEqual("Test")),
407408
new Action(() => evaluator0002.Variables["text"].ShouldEqual("Test Try")))
408409
.SetCategory("Script")
409-
.SetCategory("Variable Assignation assignation")
410+
.SetCategory("Variable assignation")
410411
.SetCategory("+=")
411412
.Returns("Test Try");
412413

@@ -423,7 +424,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
423424
new Action(() => evaluator0003.Variables["x"].ShouldEqual(5)),
424425
new Action(() => evaluator0003.Variables["x"].ShouldEqual(1)))
425426
.SetCategory("Script")
426-
.SetCategory("Variable Assignation assignation")
427+
.SetCategory("Variable assignation")
427428
.SetCategory("-=")
428429
.Returns(1);
429430

@@ -440,7 +441,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
440441
new Action(() => evaluator0004.Variables["x"].ShouldEqual(5)),
441442
new Action(() => evaluator0004.Variables["x"].ShouldEqual(10)))
442443
.SetCategory("Script")
443-
.SetCategory("Variable Assignation assignation")
444+
.SetCategory("Variable assignation")
444445
.SetCategory("*=")
445446
.Returns(10);
446447

@@ -457,7 +458,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
457458
new Action(() => evaluator0005.Variables["x"].ShouldEqual(5)),
458459
new Action(() => evaluator0005.Variables["x"].ShouldEqual(2)))
459460
.SetCategory("Script")
460-
.SetCategory("Variable Assignation assignation")
461+
.SetCategory("Variable assignation")
461462
.SetCategory("/=")
462463
.Returns(2);
463464

@@ -474,7 +475,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
474475
new Action(() => evaluator0006.Variables["x"].ShouldEqual(5)),
475476
new Action(() => evaluator0006.Variables["x"].ShouldEqual(1)))
476477
.SetCategory("Script")
477-
.SetCategory("Variable Assignation assignation")
478+
.SetCategory("Variable assignation")
478479
.SetCategory("%=")
479480
.Returns(1);
480481

@@ -491,7 +492,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
491492
new Action(() => evaluator0007.Variables["x"].ShouldEqual(5)),
492493
new Action(() => evaluator0007.Variables["x"].ShouldEqual(6)))
493494
.SetCategory("Script")
494-
.SetCategory("Variable Assignation assignation")
495+
.SetCategory("Variable assignation")
495496
.SetCategory("^=")
496497
.Returns(6);
497498

@@ -508,7 +509,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
508509
new Action(() => evaluator0008.Variables["x"].ShouldEqual(5)),
509510
new Action(() => evaluator0008.Variables["x"].ShouldEqual(1)))
510511
.SetCategory("Script")
511-
.SetCategory("Variable Assignation assignation")
512+
.SetCategory("Variable assignation")
512513
.SetCategory("&=")
513514
.Returns(1);
514515

@@ -525,7 +526,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
525526
new Action(() => evaluator0009.Variables["x"].ShouldEqual(5)),
526527
new Action(() => evaluator0009.Variables["x"].ShouldEqual(7)))
527528
.SetCategory("Script")
528-
.SetCategory("Variable Assignation assignation")
529+
.SetCategory("Variable assignation")
529530
.SetCategory("|=")
530531
.Returns(7);
531532

@@ -542,7 +543,7 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
542543
new Action(() => evaluator0010.Variables["x"].ShouldEqual(5)),
543544
new Action(() => evaluator0010.Variables["x"].ShouldEqual(20)))
544545
.SetCategory("Script")
545-
.SetCategory("Variable Assignation assignation")
546+
.SetCategory("Variable assignation")
546547
.SetCategory("<<=")
547548
.Returns(20);
548549

@@ -559,16 +560,31 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
559560
new Action(() => evaluator0011.Variables["x"].ShouldEqual(5)),
560561
new Action(() => evaluator0011.Variables["x"].ShouldEqual(1)))
561562
.SetCategory("Script")
562-
.SetCategory("Variable Assignation assignation")
563+
.SetCategory("Variable assignation")
563564
.SetCategory(">>=")
564565
.Returns(1);
565566

566567
#endregion
567568

568569
#region Indexing Assignation
569570

570-
571-
571+
yield return new TestCaseData(Resources.Script0011, null, null, null)
572+
.SetCategory("Script")
573+
.SetCategory("Indexing assignation")
574+
.SetCategory("=")
575+
.SetCategory("+=")
576+
.SetCategory("-=")
577+
.SetCategory("*=")
578+
.SetCategory("/=")
579+
.SetCategory("/=")
580+
.SetCategory("%=")
581+
.SetCategory("^=")
582+
.SetCategory("&=")
583+
.SetCategory("|=")
584+
.SetCategory("<<=")
585+
.SetCategory("<<=")
586+
.SetCategory("List function")
587+
.Returns("[8,11,3,15,2,1,6,1,7,20,1]");
572588
#endregion
573589

574590
#endregion
@@ -947,6 +963,8 @@ public object TestCasesForScriptEvaluate(string script, ExpressionEvaluator eval
947963
{
948964
evaluator = evaluator ?? new ExpressionEvaluator();
949965

966+
evaluator.EvaluateVariable += Evaluator_EvaluateVariable;
967+
950968
evaluator.Namespaces.Add("CodingSeb.ExpressionEvaluator.Tests");
951969

952970
PreExecuteAssertAction?.Invoke();
@@ -955,9 +973,19 @@ public object TestCasesForScriptEvaluate(string script, ExpressionEvaluator eval
955973

956974
PostExecuteAssertAction?.Invoke();
957975

976+
evaluator.EvaluateVariable -= Evaluator_EvaluateVariable;
977+
958978
return result;
959979
}
960980

981+
private void Evaluator_EvaluateVariable(object sender, VariableEvaluationEventArg e)
982+
{
983+
if (e.This != null && e.Name.Equals("Json"))
984+
{
985+
e.Value = JsonConvert.SerializeObject(e.This);
986+
}
987+
}
988+
961989
#endregion
962990

963991
#region Exception Throwing Evaluation

CodingSeb.ExpressionEvaluator.Tests/Resources.Designer.cs

Lines changed: 30 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodingSeb.ExpressionEvaluator.Tests/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,7 @@
148148
<data name="Script0010" type="System.Resources.ResXFileRef, System.Windows.Forms">
149149
<value>resources\script0010.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
150150
</data>
151+
<data name="Script0011" type="System.Resources.ResXFileRef, System.Windows.Forms">
152+
<value>resources\script0011.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
153+
</data>
151154
</root>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* Script0011 */
2+
list = List(5,5,5,5,5,5,5,5,5,5,5);
3+
4+
list[0] = 8;
5+
list[1] += 6;
6+
list[2] -= 2;
7+
list[3] *= 3;
8+
list[4] /= 2;
9+
list[5] %= 2;
10+
list[6] ^= 3;
11+
list[7] &= 3;
12+
list[8] |= 3;
13+
list[9] <<= 2;
14+
list[10] >>=2;
15+
16+
return list.Json;

CodingSeb.ExpressionEvaluator.Tests/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3+
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net45" />
34
<package id="NUnit" version="3.10.1" targetFramework="net45" />
45
<package id="NUnit3TestAdapter" version="3.10.0" targetFramework="net45" />
56
<package id="Should" version="1.1.20" targetFramework="net45" />

0 commit comments

Comments
 (0)