forked from Taritsyn/JavaScriptEngineSwitcher
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEs5Tests.cs
More file actions
55 lines (44 loc) · 1.45 KB
/
Es5Tests.cs
File metadata and controls
55 lines (44 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace JavaScriptEngineSwitcher.Tests.Jurassic
{
using NUnit.Framework;
using Core;
[TestFixture]
public class Es5Tests : Es5TestsBase
{
[TestFixtureSetUp]
public override void SetUp()
{
_jsEngine = JsEngineSwitcher.Current.CreateJsEngineInstance("JurassicJsEngine");
}
#region Object methods
[Test]
public override void ObjectKeysMethodIsSupported()
{
// Arrange
const string input1 = "Object.keys(['a', 'b', 'c']).toString();";
const string targetOutput1 = "0,1,2";
const string input2 = "Object.keys({ 0: 'a', 1: 'b', 2: 'c' }).toString();";
const string targetOutput2 = "0,1,2";
const string input3 = "Object.keys({ 100: 'a', 2: 'b', 7: 'c' }).toString();";
const string targetOutput3 = "100,2,7";
const string input4A = @"var myObj = function() { };
myObj.prototype = { getFoo: { value: function () { return this.foo } } };;
myObj.foo = 1;
";
const string input4B = "Object.keys(myObj).toString();";
const string targetOutput4 = "displayName,foo";
// Act
var output1 = _jsEngine.Evaluate<string>(input1);
var output2 = _jsEngine.Evaluate<string>(input2);
var output3 = _jsEngine.Evaluate<string>(input3);
_jsEngine.Execute(input4A);
var output4 = _jsEngine.Evaluate<string>(input4B);
// Assert
Assert.AreEqual(targetOutput1, output1);
Assert.AreEqual(targetOutput2, output2);
Assert.AreEqual(targetOutput3, output3);
Assert.AreEqual(targetOutput4, output4);
}
#endregion
}
}