Skip to content

Commit 7c49bdb

Browse files
committed
Added a unit tests to verify correctness of the error message generation
1 parent 1d79245 commit 7c49bdb

File tree

6 files changed

+442
-10
lines changed

6 files changed

+442
-10
lines changed

test/MsieJavaScriptEngine.Test.Auto/CommonTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ namespace MsieJavaScriptEngine.Test.Auto
44
{
55
public class CommonTests : CommonTestsBase
66
{
7-
protected override MsieJsEngine CreateJsEngine()
7+
protected override MsieJsEngine CreateJsEngine(bool enableDebugging)
88
{
99
var jsEngine = new MsieJsEngine(new JsEngineSettings
1010
{
11+
EnableDebugging = enableDebugging,
1112
EngineMode = JsEngineMode.Auto,
1213
UseEcmaScript5Polyfill = false,
1314
UseJson2Library = false

test/MsieJavaScriptEngine.Test.ChakraActiveScript/CommonTests.cs

Lines changed: 105 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using NUnit.Framework;
1+
using System;
2+
3+
using NUnit.Framework;
24

35
using MsieJavaScriptEngine.Test.Common;
46

@@ -7,10 +9,11 @@ namespace MsieJavaScriptEngine.Test.ChakraActiveScript
79
[TestFixture]
810
public class CommonTests : CommonTestsBase
911
{
10-
protected override MsieJsEngine CreateJsEngine()
12+
protected override MsieJsEngine CreateJsEngine(bool enableDebugging)
1113
{
1214
var jsEngine = new MsieJsEngine(new JsEngineSettings
1315
{
16+
EnableDebugging = enableDebugging,
1417
EngineMode = JsEngineMode.ChakraActiveScript,
1518
UseEcmaScript5Polyfill = false,
1619
UseJson2Library = false
@@ -21,6 +24,106 @@ protected override MsieJsEngine CreateJsEngine()
2124

2225
#region Mapping errors
2326

27+
[Test]
28+
public void GenerationOfParseErrorMessageIsCorrect()
29+
{
30+
// Arrange
31+
const string input = @"var arr = [];
32+
var obj = {};
33+
var foo = 'Browser's bar';";
34+
string targetOutput = "Compilation error: Expected ';'" + Environment.NewLine +
35+
" at 3:20"
36+
;
37+
38+
JsException exception = null;
39+
40+
// Act
41+
using (var jsEngine = CreateJsEngine())
42+
{
43+
try
44+
{
45+
jsEngine.Execute(input, "variables.js");
46+
}
47+
catch (JsRuntimeException e)
48+
{
49+
exception = e;
50+
}
51+
}
52+
53+
Assert.NotNull(exception);
54+
Assert.IsNotEmpty(exception.Message);
55+
Assert.AreEqual(targetOutput, exception.Message);
56+
}
57+
58+
[Test]
59+
public void GenerationOfParseErrorMessageInDebugModeIsCorrect()
60+
{
61+
// Arrange
62+
const string input = @"var arr = [];
63+
var obj = {};
64+
var foo = 'Browser's bar';";
65+
string targetOutput = "Compilation error: Expected ';'" + Environment.NewLine +
66+
" at variables.js:3:20"
67+
;
68+
69+
JsException exception = null;
70+
71+
// Act
72+
using (var jsEngine = CreateJsEngine(true))
73+
{
74+
try
75+
{
76+
jsEngine.Execute(input, "variables.js");
77+
}
78+
catch (JsRuntimeException e)
79+
{
80+
exception = e;
81+
}
82+
}
83+
84+
Assert.NotNull(exception);
85+
Assert.IsNotEmpty(exception.Message);
86+
Assert.AreEqual(targetOutput, exception.Message);
87+
}
88+
89+
[Test]
90+
public void GenerationOfRuntimeErrorMessageIsCorrect()
91+
{
92+
// Arrange
93+
const string input = @"function foo(x, y) {
94+
var z = x + y;
95+
if (z > 20) {
96+
bar();
97+
}
98+
}
99+
100+
var a = 8;
101+
var b = 15;
102+
103+
foo(a, b);";
104+
string targetOutput = "Runtime error: 'bar' is undefined" + Environment.NewLine +
105+
" at 4:3";
106+
107+
JsException exception = null;
108+
109+
// Act
110+
using (var jsEngine = CreateJsEngine())
111+
{
112+
try
113+
{
114+
jsEngine.Execute(input, "functions.js");
115+
}
116+
catch (JsRuntimeException e)
117+
{
118+
exception = e;
119+
}
120+
}
121+
122+
Assert.NotNull(exception);
123+
Assert.IsNotEmpty(exception.Message);
124+
Assert.AreEqual(targetOutput, exception.Message);
125+
}
126+
24127
[Test]
25128
public override void MappingRuntimeErrorDuringEvaluationOfExpressionIsCorrect()
26129
{
Lines changed: 112 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
using NUnit.Framework;
1+
using System;
2+
using System.Text.RegularExpressions;
3+
4+
using NUnit.Framework;
25

36
using MsieJavaScriptEngine.Test.Common;
47

@@ -7,16 +10,123 @@ namespace MsieJavaScriptEngine.Test.ChakraEdgeJsRt
710
[TestFixture]
811
public class CommonTests : CommonTestsBase
912
{
10-
protected override MsieJsEngine CreateJsEngine()
13+
protected override MsieJsEngine CreateJsEngine(bool enableDebugging)
1114
{
1215
var jsEngine = new MsieJsEngine(new JsEngineSettings
1316
{
17+
EnableDebugging = enableDebugging,
1418
EngineMode = JsEngineMode.ChakraEdgeJsRt,
1519
UseEcmaScript5Polyfill = false,
1620
UseJson2Library = false
1721
});
1822

1923
return jsEngine;
2024
}
25+
26+
#region Mapping errors
27+
28+
[Test]
29+
public void GenerationOfParseErrorMessageIsCorrect()
30+
{
31+
// Arrange
32+
const string input = @"var arr = [];
33+
var obj = {};
34+
var foo = 'Browser's bar';";
35+
string targetOutput = "Compile error: Expected ';'" + Environment.NewLine +
36+
" at 3:20"
37+
;
38+
39+
JsException exception = null;
40+
41+
// Act
42+
using (var jsEngine = CreateJsEngine())
43+
{
44+
try
45+
{
46+
jsEngine.Execute(input, "variables.js");
47+
}
48+
catch (JsRuntimeException e)
49+
{
50+
exception = e;
51+
}
52+
}
53+
54+
Assert.NotNull(exception);
55+
Assert.IsNotEmpty(exception.Message);
56+
Assert.AreEqual(targetOutput, exception.Message);
57+
}
58+
59+
[Test]
60+
public void GenerationOfParseErrorMessageInDebugModeIsCorrect()
61+
{
62+
// Arrange
63+
const string input = @"var arr = [];
64+
var obj = {};
65+
var foo = 'Browser's bar';";
66+
string targetOutput = "Compile error: Expected ';'" + Environment.NewLine +
67+
" at 3:20"
68+
;
69+
70+
JsException exception = null;
71+
72+
// Act
73+
using (var jsEngine = CreateJsEngine(true))
74+
{
75+
try
76+
{
77+
jsEngine.Execute(input, "variables.js");
78+
}
79+
catch (JsRuntimeException e)
80+
{
81+
exception = e;
82+
}
83+
}
84+
85+
Assert.NotNull(exception);
86+
Assert.IsNotEmpty(exception.Message);
87+
Assert.AreEqual(targetOutput, exception.Message);
88+
}
89+
90+
[Test]
91+
public void GenerationOfRuntimeErrorMessageIsCorrect()
92+
{
93+
// Arrange
94+
const string input = @"function foo(x, y) {
95+
var z = x + y;
96+
if (z > 20) {
97+
bar();
98+
}
99+
}
100+
101+
var a = 8;
102+
var b = 15;
103+
104+
foo(a, b);";
105+
string targetOutputPattern = @"^ReferenceError: 'bar' is (un|not )defined\n" +
106+
@" at foo \(functions.js:4:3\)\n" +
107+
@" at Global code \(functions.js:11:1\)$"
108+
;
109+
110+
JsException exception = null;
111+
112+
// Act
113+
using (var jsEngine = CreateJsEngine())
114+
{
115+
try
116+
{
117+
jsEngine.Execute(input, "functions.js");
118+
}
119+
catch (JsRuntimeException e)
120+
{
121+
exception = e;
122+
}
123+
}
124+
125+
Assert.NotNull(exception);
126+
Assert.IsNotEmpty(exception.Message);
127+
Assert.True(Regex.IsMatch(exception.Message, targetOutputPattern));
128+
}
129+
130+
#endregion
21131
}
22132
}

0 commit comments

Comments
 (0)