ExtensionMethodsTest.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. [Fact]
  39. public void ShouldPrioritizingNonGenericMethod()
  40. {
  41. var options = new Options();
  42. options.AddExtensionMethods(typeof(CustomStringExtensions));
  43. var engine = new Engine(options);
  44. var result = engine.Execute("\"{'name':'Mickey'}\".DeserializeObject()").GetCompletionValue().ToObject() as dynamic;
  45. Assert.Equal("Mickey", result.name);
  46. }
  47. }
  48. }