JavaScriptExceptionTests.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Jint.Native;
  2. using Jint.Native.Error;
  3. using Jint.Runtime;
  4. namespace Jint.Tests.PublicInterface
  5. {
  6. public class JavaScriptExceptionTests
  7. {
  8. [Fact]
  9. public void CanCreateAndThrowJavaScriptException()
  10. {
  11. var engine = new Engine();
  12. engine.SetValue("throw1", () =>
  13. {
  14. throw new JavaScriptException(engine.Realm.Intrinsics.Error, "message 1");
  15. });
  16. engine.SetValue("throw2", () =>
  17. {
  18. throw new JavaScriptException(new JsString("message 2"));
  19. });
  20. Assert.Throws<JavaScriptException>(() =>
  21. {
  22. engine.Evaluate(@"throw1()");
  23. });
  24. var result1 = engine.Evaluate(@"try { throw1() } catch (e) { return e; }");
  25. var error1 = Assert.IsType<ErrorInstance>(result1);
  26. Assert.Equal("message 1", error1.Get("message").ToString());
  27. var result2 = engine.Evaluate(@"try { throw2() } catch (e) { return e; }");
  28. var jsString = Assert.IsType<JsString>(result2);
  29. Assert.Equal("message 2", jsString.ToString());
  30. }
  31. }
  32. }