WeakSetMapTests.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System.Collections.Generic;
  2. using Jint.Native;
  3. using Jint.Native.Object;
  4. using Jint.Native.WeakMap;
  5. using Jint.Native.WeakSet;
  6. using Jint.Runtime;
  7. using Xunit;
  8. namespace Jint.Tests.Runtime
  9. {
  10. public class WeakSetMapTests
  11. {
  12. private static readonly Engine _engine = new Engine();
  13. [Fact]
  14. public void WeakMapShouldThrowWhenCalledWithoutNew()
  15. {
  16. var e = Assert.Throws<JavaScriptException>(() => _engine.Execute("{ const m = new WeakMap(); WeakMap.call(m,[]); }"));
  17. Assert.Equal("Constructor WeakMap requires 'new'", e.Message);
  18. }
  19. [Fact]
  20. public void WeakSetShouldThrowWhenCalledWithoutNew()
  21. {
  22. var e = Assert.Throws<JavaScriptException>(() => _engine.Execute("{ const s = new WeakSet(); WeakSet.call(s,[]); }"));
  23. Assert.Equal("Constructor WeakSet requires 'new'", e.Message);
  24. }
  25. public static IEnumerable<object[]> PrimitiveKeys = new TheoryData<JsValue>
  26. {
  27. JsValue.Null,
  28. JsValue.Undefined,
  29. 0,
  30. 100.04,
  31. double.NaN,
  32. "hello",
  33. true,
  34. new JsSymbol("hello")
  35. };
  36. [Theory]
  37. [MemberData(nameof(PrimitiveKeys))]
  38. public void WeakSetAddShouldThrowForPrimitiveKey(JsValue key) {
  39. var weakSet = new WeakSetInstance(_engine);
  40. var e = Assert.Throws<JavaScriptException>(() => weakSet.WeakSetAdd(key));
  41. Assert.StartsWith("WeakSet value must be an object, got ", e.Message);
  42. Assert.False(weakSet.WeakSetHas(key));
  43. }
  44. [Theory]
  45. [MemberData(nameof(PrimitiveKeys))]
  46. public void WeakMapSetShouldThrowForPrimitiveKey(JsValue key) {
  47. var weakMap = new WeakMapInstance(_engine);
  48. var e = Assert.Throws<JavaScriptException>(() => weakMap.WeakMapSet(key, new ObjectInstance(_engine)));
  49. Assert.StartsWith("WeakMap key must be an object, got ", e.Message);
  50. Assert.False(weakMap.WeakMapHas(key));
  51. }
  52. }
  53. }