QueryableImplTest.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. namespace Masuit.Tools.UnitTest.Mapping.ClassTests
  7. {
  8. public class QueryableImplTest<T> : IOrderedQueryable<T>
  9. {
  10. public QueryableImplTest()
  11. {
  12. Provider = new QueryProviderImplTest();
  13. Expression = Expression.Constant(this);
  14. }
  15. public QueryableImplTest(Expression expression)
  16. : this()
  17. {
  18. Expression = expression;
  19. }
  20. public Type ElementType => typeof(T);
  21. public Expression Expression { get; }
  22. public IQueryProvider Provider { get; }
  23. public IEnumerator<T> GetEnumerator()
  24. {
  25. return Provider.CreateQuery<T>(Expression).GetEnumerator();
  26. }
  27. IEnumerator IEnumerable.GetEnumerator()
  28. {
  29. return Provider.CreateQuery<T>(Expression).GetEnumerator();
  30. }
  31. }
  32. public class QueryProviderImplTest : IQueryProvider
  33. {
  34. public IQueryable CreateQuery(Expression expression)
  35. {
  36. return null;
  37. }
  38. public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
  39. {
  40. return new QueryableImplTest<TElement>(expression);
  41. }
  42. public object Execute(Expression expression)
  43. {
  44. return null;
  45. }
  46. public TResult Execute<TResult>(Expression expression)
  47. {
  48. return default(TResult);
  49. }
  50. }
  51. }