completed tests for in :)

This commit is contained in:
David Lebée 2018-03-06 22:40:01 -06:00
parent d9547fd544
commit 74a68c70c1
5 changed files with 157 additions and 85 deletions

View File

@ -101,65 +101,7 @@ namespace PoweredSoft.DynamicLinq.Test
[TestMethod] [TestMethod]
public void TestAutomaticNullChecking() public void TestAutomaticNullChecking()
{ {
var authors = new List<Author>() var authors = TestData.Authors;
{
new Author
{
Id = 1,
FirstName = "David",
LastName = "Lebee",
Posts = new List<Post>
{
new Post
{
Id = 1,
AuthorId = 1,
Title = "Match",
Content = "ABC",
Comments = new List<Comment>()
{
new Comment()
{
Id = 1,
DisplayName = "John Doe",
CommentText = "!@#$!@#!@#",
Email = "john.doe@me.com"
}
}
},
new Post
{
Id = 2,
AuthorId = 1,
Title = "Match",
Content = "ABC"
}
}
},
new Author
{
Id = 2,
FirstName = "Chuck",
LastName = "Norris",
Posts = new List<Post>
{
new Post
{
Id = 3,
AuthorId = 2,
Title = "Match",
Content = "ASD"
},
new Post
{
Id = 4,
AuthorId = 2,
Title = "DontMatch",
Content = "ASD"
}
}
}
};
// the query. // the query.
var query = authors.AsQueryable(); var query = authors.AsQueryable();

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using PoweredSoft.DynamicLinq; using PoweredSoft.DynamicLinq;
using PoweredSoft.DynamicLinq.Dal.Pocos;
using PoweredSoft.DynamicLinq.Test.Helpers; using PoweredSoft.DynamicLinq.Test.Helpers;
namespace PoweredSoft.DynamicLinq.Test namespace PoweredSoft.DynamicLinq.Test
@ -10,23 +11,13 @@ namespace PoweredSoft.DynamicLinq.Test
[TestClass] [TestClass]
public class InTests public class InTests
{ {
internal List<MockPersonObject> Persons = new List<MockPersonObject>
{
new MockPersonObject { FirstName = "David", LastName = "Lebee", Age = 28 },
new MockPersonObject { FirstName = "Michaela", LastName = "Vickar", Age = 27 },
new MockPersonObject { FirstName = "John", LastName = "Doe", Age = 28 },
new MockPersonObject { FirstName = "Chuck", LastName = "Norris", Age = 50 },
new MockPersonObject { FirstName = "Michael", LastName = "Jackson", Age = 58 }
};
[TestMethod] [TestMethod]
public void In() public void In()
{ {
IQueryable<MockPersonObject> a, b; IQueryable<MockPersonObject> a, b;
var ageGroup = new List<int>() { 28, 27, 50 }; var ageGroup = new List<int>() { 28, 27, 50 };
a = TestData.Persons.AsQueryable().Query(t => t.In("Age", ageGroup));
a = Persons.AsQueryable().Query(t => t.In("Age", ageGroup)); b = TestData.Persons.AsQueryable().Where(t => ageGroup.Contains(t.Age));
b = Persons.AsQueryable().Where(t => ageGroup.Contains(t.Age));
QueryableAssert.AreEqual(a, b); QueryableAssert.AreEqual(a, b);
} }
@ -35,8 +26,8 @@ namespace PoweredSoft.DynamicLinq.Test
{ {
IQueryable<MockPersonObject> a, b; IQueryable<MockPersonObject> a, b;
var ageGroup = new List<int>() { 50, 58 }; var ageGroup = new List<int>() { 50, 58 };
a = Persons.AsQueryable().Query(t => t.NotIn("Age", ageGroup)); a = TestData.Persons.AsQueryable().Query(t => t.NotIn("Age", ageGroup));
b = Persons.AsQueryable().Where(t => !ageGroup.Contains(t.Age)); b = TestData.Persons.AsQueryable().Where(t => !ageGroup.Contains(t.Age));
QueryableAssert.AreEqual(a, b); QueryableAssert.AreEqual(a, b);
} }
@ -45,8 +36,8 @@ namespace PoweredSoft.DynamicLinq.Test
{ {
IQueryable<MockPersonObject> a, b; IQueryable<MockPersonObject> a, b;
var group = new List<string>() { "David", "Michaela" }; var group = new List<string>() { "David", "Michaela" };
a = Persons.AsQueryable().Query(t => t.In("FirstName", group)); a = TestData.Persons.AsQueryable().Query(t => t.In("FirstName", group));
b = Persons.AsQueryable().Where(t => group.Contains(t.FirstName)); b = TestData.Persons.AsQueryable().Where(t => group.Contains(t.FirstName));
QueryableAssert.AreEqual(a, b); QueryableAssert.AreEqual(a, b);
} }
@ -57,8 +48,26 @@ namespace PoweredSoft.DynamicLinq.Test
var ageGroup = new List<string>() { "28", "27", "50" }; var ageGroup = new List<string>() { "28", "27", "50" };
var ageGroupInt = ageGroup.Select(t => Convert.ToInt32(t)).ToList(); var ageGroupInt = ageGroup.Select(t => Convert.ToInt32(t)).ToList();
a = Persons.AsQueryable().Query(t => t.In("Age", ageGroup)); a = TestData.Persons.AsQueryable().Query(t => t.In("Age", ageGroup));
b = Persons.AsQueryable().Where(t => ageGroupInt.Contains(t.Age)); b = TestData.Persons.AsQueryable().Where(t => ageGroupInt.Contains(t.Age));
QueryableAssert.AreEqual(a, b);
}
[TestMethod]
public void MixingInWithCollectionPaths()
{
var titles = new List<string>() { "Match" };
var a = TestData.Authors.AsQueryable().Query(t => t.In("Posts.Title", titles));
var b = TestData.Authors.AsQueryable().Where(t => t.Posts.Any(t2 => titles.Contains(t2.Title)));
QueryableAssert.AreEqual(a, b);
}
[TestMethod]
public void MixingInComplexPaths()
{
var authorsFirstNames = new List<string>() { "David", "Pablo" };
var a = TestData.Posts.AsQueryable().Query(t => t.In("Author.FirstName", authorsFirstNames));
var b = TestData.Posts.AsQueryable().Where(t => authorsFirstNames.Contains(t.Author.FirstName));
QueryableAssert.AreEqual(a, b); QueryableAssert.AreEqual(a, b);
} }
} }

View File

@ -70,6 +70,7 @@
<Compile Include="HelpersTests.cs" /> <Compile Include="HelpersTests.cs" />
<Compile Include="EntityFrameworkTests.cs" /> <Compile Include="EntityFrameworkTests.cs" />
<Compile Include="StringComparision.cs" /> <Compile Include="StringComparision.cs" />
<Compile Include="TestData.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />

View File

@ -10,14 +10,7 @@ namespace PoweredSoft.DynamicLinq.Test
[TestClass] [TestClass]
public class StringComparisionTests public class StringComparisionTests
{ {
internal List<MockPersonObject> Persons = new List<MockPersonObject> internal List<MockPersonObject> Persons => TestData.Persons;
{
new MockPersonObject { FirstName = "David", LastName = "Lebee", Age = 28 },
new MockPersonObject { FirstName = "Michaela", LastName = "Vickar", Age = 27 },
new MockPersonObject { FirstName = "John", LastName = "Doe", Age = 28 },
new MockPersonObject { FirstName = "Chuck", LastName = "Norris", Age = 50 },
new MockPersonObject { FirstName = "Michael", LastName = "Jackson", Age = 58 }
};
[TestMethod] [TestMethod]
public void Equal() public void Equal()

View File

@ -0,0 +1,127 @@
using PoweredSoft.DynamicLinq.Dal.Pocos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PoweredSoft.DynamicLinq.Test
{
internal static class TestData
{
static readonly internal List<MockPersonObject> Persons = new List<MockPersonObject>
{
new MockPersonObject { FirstName = "David", LastName = "Lebee", Age = 28 },
new MockPersonObject { FirstName = "Michaela", LastName = "Vickar", Age = 27 },
new MockPersonObject { FirstName = "John", LastName = "Doe", Age = 28 },
new MockPersonObject { FirstName = "Chuck", LastName = "Norris", Age = 50 },
new MockPersonObject { FirstName = "Michael", LastName = "Jackson", Age = 58 }
};
static readonly internal List<Post> Posts = new List<Post>()
{
new Post
{
Id = 1,
Author = new Author()
{
Id = 1,
FirstName = "David",
LastName = "Lebee"
},
AuthorId = 1,
CreateTime = DateTime.Now,
Title = "Match",
Content = "ABC",
},
new Post
{
Id = 2,
Author = new Author()
{
Id = 1,
FirstName = "David",
LastName = "Lebee"
},
AuthorId = 1,
CreateTime = DateTime.Now,
Title = "Match 2",
Content = "ABC 2",
},
new Post
{
Id = 3,
Author = new Author()
{
Id = 2,
FirstName = "John",
LastName = "Doe"
},
AuthorId = 3,
CreateTime = DateTime.Now,
Title = "Match 3",
Content = "ABC 3",
},
};
static readonly internal List<Author> Authors = new List<Author>()
{
new Author
{
Id = 1,
FirstName = "David",
LastName = "Lebee",
Posts = new List<Post>
{
new Post
{
Id = 1,
AuthorId = 1,
Title = "Match",
Content = "ABC",
Comments = new List<Comment>()
{
new Comment()
{
Id = 1,
DisplayName = "John Doe",
CommentText = "!@#$!@#!@#",
Email = "john.doe@me.com"
}
}
},
new Post
{
Id = 2,
AuthorId = 1,
Title = "Match",
Content = "ABC"
}
}
},
new Author
{
Id = 2,
FirstName = "Chuck",
LastName = "Norris",
Posts = new List<Post>
{
new Post
{
Id = 3,
AuthorId = 2,
Title = "Match",
Content = "ASD"
},
new Post
{
Id = 4,
AuthorId = 2,
Title = "DontMatch",
Content = "ASD"
}
}
}
};
}
}