ExtensionMethodsTest.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Jint.Tests.Runtime.Domain;
  2. using Xunit;
  3. namespace Jint.Tests.Runtime.ExtensionMethods
  4. {
  5. public class ExtensionMethodsTest
  6. {
  7. [Fact]
  8. public void ShouldInvokeObjectExtensionMethod()
  9. {
  10. var person = new Person();
  11. person.Name = "Mickey Mouse";
  12. person.Age = 35;
  13. var options = new Options();
  14. options.AddExtensionMethods(typeof(PersonExtensions));
  15. var engine = new Engine(options);
  16. engine.SetValue("person", person);
  17. var age = engine.Execute("person.MultiplyAge(2)").GetCompletionValue().AsInteger();
  18. Assert.Equal(70, age);
  19. }
  20. [Fact]
  21. public void ShouldInvokeStringExtensionMethod()
  22. {
  23. var options = new Options();
  24. options.AddExtensionMethods(typeof(CustomStringExtensions));
  25. var engine = new Engine(options);
  26. var result = engine.Execute("\"Hello World!\".Backwards()").GetCompletionValue().AsString();
  27. Assert.Equal("!dlroW olleH", result);
  28. }
  29. [Fact]
  30. public void ShouldInvokeNumberExtensionMethod()
  31. {
  32. var options = new Options();
  33. options.AddExtensionMethods(typeof(DoubleExtensions));
  34. var engine = new Engine(options);
  35. var result = engine.Execute("let numb = 27; numb.Add(13)").GetCompletionValue().AsInteger();
  36. Assert.Equal(40, result);
  37. }
  38. }
  39. }