DynamicObjectTest.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Collections.Generic;
  2. using Masuit.Tools.Dynamics;
  3. using Xunit;
  4. namespace Masuit.Tools.Abstractions.Test.Extensions;
  5. public class DynamicObjectTest
  6. {
  7. [Fact]
  8. public void Can_Dynamic()
  9. {
  10. var obj = DynamicFactory.NewObject();
  11. obj.Name = "Masuit";
  12. obj.Age = 18;
  13. obj.MyClass = DynamicFactory.WithObject(new
  14. {
  15. X = 10,
  16. Y = 20,
  17. Z = new List<int> { 1, 2, 3, 4, 5 }
  18. });
  19. Assert.Equal(obj.Name, obj["Name"]);
  20. Assert.Equal(obj["MyClass"]["X"], obj.MyClass.X);
  21. Assert.Equal(obj.MyClass.Z[2], obj["MyClass"]["Z"][2]);
  22. }
  23. [Fact]
  24. public void Can_ToDynamic()
  25. {
  26. var obj = new
  27. {
  28. Name = "Masuit"
  29. }.ToDynamic();
  30. obj.Age = 18;
  31. obj.MyClass = new
  32. {
  33. X = 10,
  34. Y = 20,
  35. Z = new List<int> { 1, 2, 3, 4, 5 }
  36. }.ToDynamic();
  37. obj.Prop = "test";
  38. _ = obj - "Prop";
  39. Assert.Equal(obj.Name, obj["Name"]);
  40. Assert.Equal(obj["MyClass"]["X"], obj.MyClass.X);
  41. Assert.IsType<Clay>(obj.Prop);
  42. }
  43. }