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
63 lines (50 loc) · 1.55 KB
/
Es5Tests.cs
File metadata and controls
63 lines (50 loc) · 1.55 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
56
57
58
59
60
61
62
63
namespace JavaScriptEngineSwitcher.Tests.Jint
{
using NUnit.Framework;
using Core;
public class Es5Tests : Es5TestsBase
{
protected override IJsEngine CreateJsEngine()
{
var jsEngine = JsEngineSwitcher.Current.CreateJsEngineInstance("JintJsEngine");
return jsEngine;
}
#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 = "foo";
// Act
string output1;
string output2;
string output3;
string output4;
using (var jsEngine = CreateJsEngine())
{
output1 = jsEngine.Evaluate<string>(input1);
output2 = jsEngine.Evaluate<string>(input2);
output3 = jsEngine.Evaluate<string>(input3);
jsEngine.Execute(input4A);
output4 = jsEngine.Evaluate<string>(input4B);
}
// Assert
Assert.AreEqual(targetOutput1, output1);
Assert.AreEqual(targetOutput2, output2);
Assert.AreEqual(targetOutput3, output3);
Assert.AreEqual(targetOutput4, output4);
}
#endregion
}
}