ObjectInstanceTests.cs 1.7 KB

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