better unit test to test grouping.
This commit is contained in:
parent
ed88de7c02
commit
9fe85fcb65
@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
||||
using PoweredSoft.DynamicLinq;
|
||||
using PoweredSoft.DynamicLinq.Dal;
|
||||
using System.Diagnostics;
|
||||
using PoweredSoft.DynamicLinq.Test.Helpers;
|
||||
|
||||
namespace PoweredSoft.DynamicLinq.Test
|
||||
{
|
||||
@ -33,81 +34,46 @@ namespace PoweredSoft.DynamicLinq.Test
|
||||
{
|
||||
[TestMethod]
|
||||
public void WantedSyntax()
|
||||
{/*
|
||||
var regularSyntax = TestData.Sales
|
||||
.GroupBy(t => t.ClientId);
|
||||
|
||||
var dynamicSyntax = TestData.Sales
|
||||
.AsQueryable()
|
||||
.GroupBy("ClientId");
|
||||
|
||||
|
||||
|
||||
var regularSyntax2 = TestData.Sales
|
||||
.GroupBy(t => new
|
||||
{
|
||||
t.ClientId,
|
||||
B = t.NetSales
|
||||
});*/
|
||||
|
||||
/*
|
||||
var dynamicSyntax2 = TestData.Sales
|
||||
.AsQueryable()
|
||||
.GroupBy(t => t.Path("ClientId").Path("NetSales", "B"));
|
||||
|
||||
var dynamicSyntax3 = TestData.Sales
|
||||
.AsQueryable()
|
||||
.GroupBy(t => t.UseType(typeof(TestStructure)).EqualityComparer(typeof(TestStructureCompare)).Path("ClientId"));
|
||||
|
||||
var tryAs = dynamicSyntax3 as EnumerableQuery<IGrouping<TestStructure, MockSale>>;
|
||||
var list = tryAs.Select(t => new
|
||||
{
|
||||
Key = t.Key,
|
||||
Data = t.ToList()
|
||||
}).ToList();
|
||||
|
||||
var list2 = TestData.Sales.GroupBy(t => new TestStructure { ClientId = t.ClientId }, new TestStructureCompare()).Select(t => new
|
||||
{
|
||||
Key = t.Key,
|
||||
Data = t.ToList()
|
||||
}).ToList();
|
||||
|
||||
int i = 0;*/
|
||||
|
||||
/*
|
||||
var dynamicSyntax3 = TestData.Sales
|
||||
.AsQueryable()
|
||||
.GroupBy(t => t.ClientId)
|
||||
{
|
||||
var normalSyntax = TestData.Sales
|
||||
.GroupBy(t => new { t.ClientId })
|
||||
.Select(t => new
|
||||
{
|
||||
TheClientId = t.Key,
|
||||
TheClientId = t.Key.ClientId,
|
||||
Count = t.Count(),
|
||||
});*/
|
||||
LongCount = t.LongCount(),
|
||||
NetSales = t.Sum(t2 => t2.NetSales),
|
||||
TaxAverage = t.Average(t2 => t2.Tax),
|
||||
Sales = t.ToList()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
/*
|
||||
TestData.Sales.GroupBy(t => new { t.ClientId }).Select(t => new
|
||||
{
|
||||
TheClientId = t.Key.ClientId,
|
||||
Count = t.Count(),
|
||||
LongCount = t.LongCount(),
|
||||
TaxAverage = t.Average(t2 => t2.Tax)
|
||||
});*/
|
||||
|
||||
var dynamicSyntax2 = TestData.Sales
|
||||
var dynamicSyntax = TestData.Sales
|
||||
.AsQueryable()
|
||||
.GroupBy(t => t.Path("ClientId"))
|
||||
.Select(t =>
|
||||
{
|
||||
t.Key("TheClientId", "ClientId");
|
||||
t.Count("Count");
|
||||
t.LongCount("LongCount");
|
||||
t.Sum("NetSales");
|
||||
t.Average("Tax", "TaxAverage");
|
||||
t.ToList("Sales");
|
||||
});
|
||||
t.Key("TheClientId", "ClientId");
|
||||
t.Count("Count");
|
||||
t.LongCount("LongCount");
|
||||
t.Sum("NetSales");
|
||||
t.Average("Tax", "TaxAverage");
|
||||
t.ToList("Sales");
|
||||
})
|
||||
.ToDynamicClassList();
|
||||
|
||||
Assert.AreEqual(normalSyntax.Count, dynamicSyntax.Count);
|
||||
for(var i = 0; i < normalSyntax.Count; i++)
|
||||
{
|
||||
var left = normalSyntax[i];
|
||||
var right = dynamicSyntax[i];
|
||||
|
||||
var result = dynamicSyntax2.ToObjectList();
|
||||
Assert.AreEqual(left.TheClientId, right.GetDynamicPropertyValue("TheClientId"));
|
||||
Assert.AreEqual(left.Count, right.GetDynamicPropertyValue("Count"));
|
||||
Assert.AreEqual(left.LongCount, right.GetDynamicPropertyValue("LongCount"));
|
||||
Assert.AreEqual(left.TaxAverage, right.GetDynamicPropertyValue("TaxAverage"));
|
||||
QueryableAssert.AreEqual(left.Sales.AsQueryable(), right.GetDynamicPropertyValue<List<MockSale>>("Sales").AsQueryable());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ namespace PoweredSoft.DynamicLinq
|
||||
{
|
||||
public static class QueryableExtensions
|
||||
{
|
||||
public static IQueryable<T> Where<T>(this IQueryable<T> query, string path, ConditionOperators conditionOperator, object value,
|
||||
QueryConvertStrategy convertStrategy = QueryConvertStrategy.ConvertConstantToComparedPropertyOrField,
|
||||
public static IQueryable<T> Where<T>(this IQueryable<T> query, string path, ConditionOperators conditionOperator, object value,
|
||||
QueryConvertStrategy convertStrategy = QueryConvertStrategy.ConvertConstantToComparedPropertyOrField,
|
||||
QueryCollectionHandling collectionHandling = QueryCollectionHandling.Any, StringComparison? stringComparision = null)
|
||||
{
|
||||
query = query.Query(qb => qb.Compare(path, conditionOperator, value, convertStrategy: convertStrategy, collectionHandling: collectionHandling, stringComparision: stringComparision));
|
||||
@ -22,7 +22,7 @@ namespace PoweredSoft.DynamicLinq
|
||||
public static IQueryable<T> Where<T>(this IQueryable<T> query, Action<WhereBuilder> callback)
|
||||
=> query.Query(callback);
|
||||
|
||||
public static IQueryable<T> Query<T> (this IQueryable<T> query, Action<WhereBuilder> callback)
|
||||
public static IQueryable<T> Query<T>(this IQueryable<T> query, Action<WhereBuilder> callback)
|
||||
{
|
||||
var queryBuilder = new WhereBuilder(query);
|
||||
callback(queryBuilder);
|
||||
@ -115,5 +115,13 @@ namespace PoweredSoft.DynamicLinq
|
||||
|
||||
return ret;
|
||||
}
|
||||
public static List<DynamicClass> ToDynamicClassList(this IQueryable query)
|
||||
{
|
||||
if (!typeof(DynamicClass).IsAssignableFrom(query.ElementType))
|
||||
throw new Exception($"{query.ElementType} does not inherit DynamicClass");
|
||||
|
||||
var ret = query.Cast<DynamicClass>().ToList();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user