DelegateWrapperTests.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. using Jint.Runtime.Interop;
  2. namespace Jint.Tests.Runtime;
  3. public class DelegateWrapperTests
  4. {
  5. [Fact]
  6. public void ShouldSpreadParameters()
  7. {
  8. var engine = new Engine();
  9. engine.SetValue("registerCallback", new DelegateWrapper(engine, new RegisterCallbackDelegate(RegisterCallback)));
  10. engine.Execute(@"
  11. var argsConcat = '';
  12. registerCallback((valTest, valOther, valNumber) => {
  13. argsConcat+=typeof valTest;
  14. argsConcat+=' ' + typeof valOther;
  15. argsConcat+=' ' + typeof valNumber;
  16. }, 'test', 'other', 1337);
  17. ");
  18. Assert.True(engine.Evaluate("argsConcat == 'string string number'").AsBoolean());
  19. }
  20. private static void RegisterCallback(CallbackAction callback, params object[] arguments)
  21. {
  22. callback.Invoke(arguments);
  23. }
  24. private delegate void RegisterCallbackDelegate(CallbackAction callback, params object[] arguments);
  25. private delegate void CallbackAction(params object[] arguments);
  26. }