ObjectInstanceTests.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Jint.Native;
  2. namespace Jint.Tests.Runtime
  3. {
  4. public class ObjectInstanceTests
  5. {
  6. [Fact]
  7. public void RemovingFirstPropertyFromObjectInstancePropertiesBucketAndEnumerating()
  8. {
  9. var engine = new Engine();
  10. var instance = new JsObject(engine);
  11. instance.FastSetDataProperty("bare", JsValue.Null);
  12. instance.FastSetDataProperty("scope", JsValue.Null);
  13. instance.RemoveOwnProperty("bare");
  14. var propertyNames = instance.GetOwnProperties().Select(x => x.Key).ToList();
  15. Assert.Equal(new JsValue[] { "scope" }, propertyNames);
  16. }
  17. [Theory]
  18. [InlineData("Array")]
  19. [InlineData("Boolean")]
  20. [InlineData("Date")]
  21. [InlineData("Error")]
  22. [InlineData("Number")]
  23. [InlineData("Object")]
  24. [InlineData("String")]
  25. public void ExtendingObjects(string baseType)
  26. {
  27. var code = $@"
  28. class My{baseType} extends {baseType} {{
  29. constructor(...args) {{
  30. super(...args);
  31. }}
  32. }}
  33. const o = new My{baseType}();
  34. o.constructor === My{baseType}";
  35. var engine = new Engine();
  36. Assert.True(engine.Evaluate(code).AsBoolean());
  37. }
  38. [Fact]
  39. public void ShouldHavePrototypeInPlaceByDefault()
  40. {
  41. var engine = new Engine();
  42. var instance = new JsObject(engine);
  43. Assert.NotNull(instance.GetPrototypeOf());
  44. Assert.Equal("[object Object]", instance.ToString());
  45. }
  46. }
  47. }