|
@@ -0,0 +1,38 @@
|
|
|
+using Jint.Native;
|
|
|
+using Jint.Native.Error;
|
|
|
+using Jint.Runtime;
|
|
|
+
|
|
|
+namespace Jint.Tests.PublicInterface
|
|
|
+{
|
|
|
+ public class JavaScriptExceptionTests
|
|
|
+ {
|
|
|
+ [Fact]
|
|
|
+ public void CanCreateAndThrowJavaScriptException()
|
|
|
+ {
|
|
|
+ var engine = new Engine();
|
|
|
+
|
|
|
+ engine.SetValue("throw1", () =>
|
|
|
+ {
|
|
|
+ throw new JavaScriptException(engine.Realm.Intrinsics.Error, "message 1");
|
|
|
+ });
|
|
|
+
|
|
|
+ engine.SetValue("throw2", () =>
|
|
|
+ {
|
|
|
+ throw new JavaScriptException(new JsString("message 2"));
|
|
|
+ });
|
|
|
+
|
|
|
+ Assert.Throws<JavaScriptException>(() =>
|
|
|
+ {
|
|
|
+ engine.Evaluate(@"throw1()");
|
|
|
+ });
|
|
|
+
|
|
|
+ var result1 = engine.Evaluate(@"try { throw1() } catch (e) { return e; }");
|
|
|
+ var error1 = Assert.IsType<ErrorInstance>(result1);
|
|
|
+ Assert.Equal("message 1", error1.Get("message").ToString());
|
|
|
+
|
|
|
+ var result2 = engine.Evaluate(@"try { throw2() } catch (e) { return e; }");
|
|
|
+ var jsString = Assert.IsType<JsString>(result2);
|
|
|
+ Assert.Equal("message 2", jsString.ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|