RavenApiUsageTests.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Esprima.Ast;
  2. using Jint.Constraints;
  3. using Jint.Native.Array;
  4. using Jint.Native.Function;
  5. using Jint.Runtime.Descriptors;
  6. namespace Jint.Tests.PublicInterface;
  7. /// <summary>
  8. /// Tests related to functionality that RavenDB needs exposed.
  9. /// </summary>
  10. public class RavenApiUsageTests
  11. {
  12. [Fact]
  13. public void CanBuildCustomScriptFunctionInstance()
  14. {
  15. var engine = new Engine();
  16. var properties = new List<Node>
  17. {
  18. new Property(PropertyKind.Data, new Identifier("field"), false,
  19. new StaticMemberExpression(new Identifier("self"), new Identifier("field"), optional: false), false, false)
  20. };
  21. var functionExp = new FunctionExpression(
  22. new Identifier("functionId"),
  23. NodeList.Create<Node>(new List<Expression> { new Identifier("self") }),
  24. new BlockStatement(NodeList.Create(new List<Statement> { new ReturnStatement(new ObjectExpression(NodeList.Create(properties))) })),
  25. generator: false,
  26. strict: false,
  27. async: false);
  28. var functionObject = new ScriptFunctionInstance(
  29. engine,
  30. functionExp,
  31. engine.CreateNewDeclarativeEnvironment(),
  32. strict: false
  33. );
  34. Assert.NotNull(functionObject);
  35. }
  36. [Fact]
  37. public void CanChangeMaxStatementValue()
  38. {
  39. var engine = new Engine(options => options.MaxStatements(123));
  40. var constraint = engine.FindConstraint<MaxStatementsConstraint>();
  41. Assert.NotNull(constraint);
  42. var oldMaxStatements = constraint.MaxStatements;
  43. constraint.MaxStatements = 321;
  44. Assert.Equal(123, oldMaxStatements);
  45. Assert.Equal(321, constraint.MaxStatements);
  46. }
  47. [Fact]
  48. public void CanConstructArrayInstanceFromDescriptorArray()
  49. {
  50. var descriptors = new[]
  51. {
  52. new PropertyDescriptor(42, writable: false, enumerable: false, configurable: false),
  53. };
  54. var engine = new Engine();
  55. var array = new ArrayInstance(engine, descriptors);
  56. Assert.Equal(1L, array.Length);
  57. Assert.Equal(42, array[0]);
  58. }
  59. }