ObjectInstanceTests.cs 1.7 KB

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