Skip to content

Commit 70f6aad

Browse files
committed
convert AccessorInterceptorTests to NUnit
1 parent 18db068 commit 70f6aad

9 files changed

+415
-108
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
using NUnit.Framework;
2+
3+
namespace Noesis.Javascript.Tests
4+
{
5+
[TestFixture]
6+
public class AccessorInterceptorTests
7+
{
8+
private JavascriptContext _context;
9+
10+
[SetUp]
11+
public void SetUp()
12+
{
13+
_context = new JavascriptContext();
14+
}
15+
16+
[TearDown]
17+
public void TearDown()
18+
{
19+
_context.Dispose();
20+
}
21+
22+
[Test]
23+
public void AccessAnElementInAManagedArray()
24+
{
25+
int[] myArray = new int[] { 151515, 666, 2555, 888, 99 };
26+
_context.SetParameter("myArray", myArray);
27+
28+
Assert.That(_context.Run("myArray[2] == 2555"), Is.True);
29+
}
30+
31+
class ClassWithIndexer
32+
{
33+
public int Index { get; set; }
34+
public string Value { get; set; }
35+
36+
public string this[int iIndex]
37+
{
38+
get { return (Value + " " + iIndex); }
39+
set {
40+
Value = value;
41+
Index = iIndex;
42+
}
43+
}
44+
}
45+
46+
[Test]
47+
public void AccessingByIndexAPropertyInAManagedObject()
48+
{
49+
_context.SetParameter("myObject", new ClassWithIndexer { Value = "Value"});
50+
51+
Assert.That(_context.Run("myObject[99] == 'Value 99'"), Is.True);
52+
}
53+
54+
class ClassWithProperty
55+
{
56+
public string MyProperty { get; set; }
57+
}
58+
59+
[Test]
60+
public void AccessingByNameAPropertyInManagedObject()
61+
{
62+
_context.SetParameter("myObject", new ClassWithProperty { MyProperty = "This is the string return by \"MyProperty\"" });
63+
64+
Assert.That(_context.Run("myObject.MyProperty == 'This is the string return by \"MyProperty\"'"), Is.True);
65+
}
66+
67+
[Test]
68+
public void SetValueByIndexAValueInNetArray()
69+
{
70+
int[] ints = new[] {1, 2, 3};
71+
_context.SetParameter("myArray", ints);
72+
73+
_context.Run("myArray[1] = 17");
74+
75+
Assert.That(ints[1], Is.EqualTo(17));
76+
}
77+
78+
[Test]
79+
public void SetValueByIndexerInManagedObject()
80+
{
81+
var classWithIndexer = new ClassWithIndexer();
82+
_context.SetParameter("myObject", classWithIndexer);
83+
84+
_context.Run("myObject[20] = 'The value is now set'");
85+
86+
Assert.That(classWithIndexer.Value, Is.EqualTo("The value is now set"));
87+
Assert.That(classWithIndexer.Index, Is.EqualTo(20));
88+
}
89+
90+
[Test]
91+
public void SetPropertyByNameInManagedObject()
92+
{
93+
var classWithProperty = new ClassWithProperty();
94+
_context.SetParameter("myObject", classWithProperty);
95+
96+
_context.Run("myObject.MyProperty = 'hello'");
97+
98+
Assert.That(classWithProperty.MyProperty, Is.EqualTo("hello"));
99+
}
100+
101+
[Test]
102+
public void SettingUnknownPropertiesIsAllowed()
103+
{
104+
_context.SetParameter("myObject", new ClassWithProperty());
105+
106+
_context.Run("myObject.UnknownProperty = 77");
107+
108+
Assert.That(_context.Run("myObject.UnknownProperty"), Is.EqualTo(77));
109+
}
110+
111+
[Test]
112+
public void SettingUnknownPropertiesIsDisallowedIfRejectUnknownPropertiesIsSet()
113+
{
114+
_context.SetParameter("myObject", new ClassWithProperty(), SetParameterOptions.RejectUnknownProperties);
115+
116+
Assert.Throws<JavascriptException>(() => _context.Run("myObject.UnknownProperty = 77"));
117+
}
118+
}
119+
}

Tests/Noesis.Javascript.Tests/Noesis.Javascript.Tests.VS2012.csproj

+16-2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@
7272
<PlatformTarget>AnyCPU</PlatformTarget>
7373
</PropertyGroup>
7474
<ItemGroup>
75+
<Reference Include="nunit.framework">
76+
<HintPath>..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
77+
</Reference>
7578
<Reference Include="System" />
7679
<Reference Include="System.Core">
7780
<RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -86,20 +89,24 @@
8689
<Reference Include="System.Xml" />
8790
</ItemGroup>
8891
<ItemGroup>
92+
<Compile Include="AccessorInterceptorTests.cs" />
8993
<Compile Include="Program.cs" />
9094
<Compile Include="Properties\AssemblyInfo.cs" />
9195
<Compile Include="RegressionTests\RegressionTests_VersionString.cs" />
9296
<Compile Include="RegressionTests\RegressionTests_ConvertFromJavascriptTests.cs" />
9397
<Compile Include="RegressionTests\RegressionTests_ConvertToJavascriptTests.cs" />
94-
<Compile Include="RegressionTests\RegressionTests_AccessorsInterceptorsTests.cs" />
9598
<Compile Include="RegressionTests\RegressionTests_ExceptionTests.cs" />
9699
<Compile Include="RegressionTests\RegressionTests_Isolates.cs" />
97100
<Compile Include="RegressionTests\RegressionTests_MemoryLeak.cs" />
101+
<Compile Include="ScriptResources.Designer.cs">
102+
<AutoGen>True</AutoGen>
103+
<DesignTime>True</DesignTime>
104+
<DependentUpon>ScriptResources.resx</DependentUpon>
105+
</Compile>
98106
<Compile Include="UnitTest\JavascriptTest.cs" />
99107
</ItemGroup>
100108
<ItemGroup>
101109
<Content Include="RegressionTests\Scripts\ConvertToJavascriptTests.js" />
102-
<Content Include="RegressionTests\Scripts\AccessorsInterceptorsTests.js" />
103110
<Content Include="RegressionTests\Scripts\ConvertFromJavascriptTests.js" />
104111
<Content Include="RegressionTests\Scripts\ExceptionTests.js" />
105112
</ItemGroup>
@@ -137,13 +144,20 @@
137144
</ItemGroup>
138145
<ItemGroup>
139146
<None Include="app.config" />
147+
<None Include="packages.config" />
140148
</ItemGroup>
141149
<ItemGroup>
142150
<ProjectReference Include="..\..\Source\Noesis.Javascript\Noesis.Javascript.VS2010.vcxproj">
143151
<Project>{AF1D460B-D372-40F7-8DDB-3F6EE4489EB4}</Project>
144152
<Name>Noesis.Javascript</Name>
145153
</ProjectReference>
146154
</ItemGroup>
155+
<ItemGroup>
156+
<EmbeddedResource Include="ScriptResources.resx">
157+
<Generator>ResXFileCodeGenerator</Generator>
158+
<LastGenOutput>ScriptResources.Designer.cs</LastGenOutput>
159+
</EmbeddedResource>
160+
</ItemGroup>
147161
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
148162
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
149163
Other similar extension points exist, see Microsoft.Common.targets.

Tests/Noesis.Javascript.Tests/RegressionTests/RegressionTests_AccessorsInterceptorsTests.cs

-45
This file was deleted.

Tests/Noesis.Javascript.Tests/RegressionTests/Scripts/AccessorsInterceptorsTests.js

-61
This file was deleted.

0 commit comments

Comments
 (0)