ObjectInstanceTests.cs 1.5 KB

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