1+ namespace MsieJavaScriptEngine . Tests . E_Classic
2+ {
3+ using NUnit . Framework ;
4+
5+ using MsieJavaScriptEngine ;
6+
7+ [ TestFixture ]
8+ public class Es5Tests : Es5TestsBase
9+ {
10+ [ TestFixtureSetUp ]
11+ public override void SetUp ( )
12+ {
13+ _jsEngine = new MsieJsEngine ( new JsEngineSettings
14+ {
15+ EngineMode = JsEngineMode . Classic ,
16+ UseEcmaScript5Polyfill = true ,
17+ UseJson2Library = true
18+ } ) ;
19+ }
20+
21+ #region Object methods
22+
23+ [ Test ]
24+ public override void ObjectKeysMethodIsSupported ( )
25+ {
26+ // Arrange
27+ const string input1 = "Object.keys(['a', 'b', 'c']).toString();" ;
28+ const string targetOutput1 = "0,1,2" ;
29+
30+ const string input2 = "Object.keys({ 0: 'a', 1: 'b', 2: 'c' }).toString();" ;
31+ const string targetOutput2 = "0,1,2" ;
32+
33+ const string input3 = "Object.keys({ 100: 'a', 2: 'b', 7: 'c' }).toString();" ;
34+ const string targetOutput3 = "100,2,7" ;
35+
36+ const string initCode4 = @"var myObj = function() { };
37+ myObj.prototype = { getFoo: { value: function () { return this.foo } } };;
38+ myObj.foo = 1;
39+ " ;
40+ const string input4 = "Object.keys(myObj).toString();" ;
41+ const string targetOutput4 = "foo" ;
42+
43+ // Act
44+ var output1 = _jsEngine . Evaluate < string > ( input1 ) ;
45+ var output2 = _jsEngine . Evaluate < string > ( input2 ) ;
46+ var output3 = _jsEngine . Evaluate < string > ( input3 ) ;
47+
48+ _jsEngine . Execute ( initCode4 ) ;
49+ var output4 = _jsEngine . Evaluate < string > ( input4 ) ;
50+
51+ // Assert
52+ Assert . AreEqual ( targetOutput1 , output1 ) ;
53+ Assert . AreEqual ( targetOutput2 , output2 ) ;
54+ Assert . AreEqual ( targetOutput3 , output3 ) ;
55+ Assert . AreEqual ( targetOutput4 , output4 ) ;
56+ }
57+
58+ #endregion
59+ }
60+ }
0 commit comments