MapperExpressionVisitorTest.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using Masuit.Tools.Mapping.Visitor;
  2. using Masuit.Tools.UnitTest.Mapping.ClassTests;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using System;
  5. using System.Linq.Expressions;
  6. namespace Masuit.Tools.UnitTest.Mapping.Core
  7. {
  8. [TestClass]
  9. public class MapperExpressionVisitorTest
  10. {
  11. [TestMethod, TestCategory("Visit")]
  12. public void Visit_ExpressionIsNull_ReturnNull()
  13. {
  14. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  15. Expression exp = null;
  16. var actual = expected.Visit(exp);
  17. Assert.IsNull(actual);
  18. }
  19. [TestMethod, TestCategory("Visit")]
  20. public void Visit_ExpressionLambdaConstantSimple_ReturnExpression()
  21. {
  22. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  23. Expression<Func<ClassSource, object>> exp = x => x.PropInt1;
  24. var actual = expected.Visit(exp, true);
  25. Assert.IsNotNull(actual);
  26. }
  27. [TestMethod, TestCategory("Visit")]
  28. public void Visit_ExpressionConstantSimple_ReturnExpression()
  29. {
  30. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  31. Expression<Func<ClassSource, object>> exp = x => x.PropInt1;
  32. var actual = expected.Visit(exp.Body, true);
  33. Assert.IsNotNull(actual);
  34. }
  35. [TestMethod, TestCategory("Visit")]
  36. public void Visit_ExpressionMemberSimple_ReturnExpression()
  37. {
  38. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  39. Expression<Func<ClassSource, object>> exp = x => x.PropString1;
  40. var actual = expected.Visit(exp.Body, true);
  41. Assert.IsNotNull(actual);
  42. }
  43. [TestMethod, TestCategory("Visit")]
  44. public void Visit_ExpressionSubClassCheckIfNull_ReturnExpression()
  45. {
  46. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  47. Expression<Func<ClassSource, object>> exp = x => x.SubClass.PropString1;
  48. var actual = expected.Visit(exp, true);
  49. Assert.IsTrue(actual.NodeType == ExpressionType.MemberAccess);
  50. }
  51. [TestMethod, TestCategory("Visit")]
  52. public void Visit_ExpressionSubClassCheckIfNull_DefaultValueConstant_ReturnExpression()
  53. {
  54. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  55. Expression<Func<ClassSource, object>> exp = x => x.SubClass.PropInt1;
  56. var actual = expected.Visit(exp, true);
  57. Assert.IsTrue(actual.NodeType == ExpressionType.MemberAccess);
  58. }
  59. [TestMethod, TestCategory("Visit")]
  60. public void Visit_ParameterExpression_CheckIfNull_IsTrue_Expression()
  61. {
  62. MapperExpressionVisitor expected = new MapperExpressionVisitor(Expression.Parameter(typeof(ClassSource), "s"));
  63. ParameterExpression exp = Expression.Parameter(typeof(ClassSource2), "x");
  64. Expression actual = expected.Visit(exp, true) as ParameterExpression;
  65. Assert.IsTrue(actual.NodeType == ExpressionType.Parameter);
  66. Assert.AreNotEqual(actual.Type, exp.Type);
  67. }
  68. }
  69. }