ProxyTests.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace Jint.Tests.Runtime
  2. {
  3. public class ProxyTests
  4. {
  5. [Fact]
  6. public void ProxyCanBeRevokedWithoutContext()
  7. {
  8. new Engine()
  9. .Execute(@"
  10. var revocable = Proxy.revocable({}, {});
  11. var revoke = revocable.revoke;
  12. revoke.call(null);
  13. ");
  14. }
  15. [Fact]
  16. public void ProxyToStringUseTarget()
  17. {
  18. var engine = new Engine().Execute(@"
  19. const targetWithToString = {toString: () => 'target'}
  20. ");
  21. Assert.Equal("target", engine.Evaluate("new Proxy(targetWithToString, {}).toString()").AsString());
  22. Assert.Equal("target", engine.Evaluate("`${new Proxy(targetWithToString, {})}`").AsString());
  23. }
  24. [Fact]
  25. public void ProxyToStringUseHandler()
  26. {
  27. var engine = new Engine().Execute(@"
  28. const handler = { get: (target, prop, receiver) => prop === 'toString' ? () => 'handler' : Reflect.get(target, prop, receiver) }
  29. const targetWithToString = {toString: () => 'target'}
  30. ");
  31. Assert.Equal("handler", engine.Evaluate("new Proxy({}, handler).toString()").AsString());
  32. Assert.Equal("handler", engine.Evaluate("new Proxy(targetWithToString, handler).toString()").AsString());
  33. Assert.Equal("handler", engine.Evaluate("`${new Proxy({}, handler)}`").AsString());
  34. Assert.Equal("handler", engine.Evaluate("`${new Proxy(targetWithToString, handler)}`").AsString());
  35. }
  36. }
  37. }