From 0807d7cdd70e06cdf79b47f23d3e78acea8e102f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Leb=C3=A9e?= Date: Wed, 28 Feb 2018 18:10:33 -0600 Subject: [PATCH] Almost done testing shortcuts. --- .../Helpers/QueryableAssert.cs | 41 +++++++ .../PoweredSoft.DynamicLinq.Test.csproj | 2 + PoweredSoft.DynamicLinq.Test/ShortcutTests.cs | 115 ++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 PoweredSoft.DynamicLinq.Test/Helpers/QueryableAssert.cs create mode 100644 PoweredSoft.DynamicLinq.Test/ShortcutTests.cs diff --git a/PoweredSoft.DynamicLinq.Test/Helpers/QueryableAssert.cs b/PoweredSoft.DynamicLinq.Test/Helpers/QueryableAssert.cs new file mode 100644 index 0000000..01635da --- /dev/null +++ b/PoweredSoft.DynamicLinq.Test/Helpers/QueryableAssert.cs @@ -0,0 +1,41 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PoweredSoft.DynamicLinq.Test.Helpers +{ + public static class QueryableAssert + { + private static bool _sameList(IQueryable a, IQueryable b) + where T : class + { + if (a.Count() != b.Count()) + return false; + + var listA = a.ToList(); + var listB = b.ToList(); + for (var i = 0; i < listA.Count; i++) + { + if (listA.ElementAt(i) != listB.ElementAt(i)) + return false; + } + + return true; + } + + public static void AreEqual(IQueryable a, IQueryable b) + where T : class + { + Assert.IsTrue(_sameList(a, b)); + } + + public static void AreNotEqual(IQueryable a, IQueryable b) + where T : class + { + Assert.IsFalse(_sameList(a, b)); + } + } +} diff --git a/PoweredSoft.DynamicLinq.Test/PoweredSoft.DynamicLinq.Test.csproj b/PoweredSoft.DynamicLinq.Test/PoweredSoft.DynamicLinq.Test.csproj index 81a8bbf..fc6f2cb 100644 --- a/PoweredSoft.DynamicLinq.Test/PoweredSoft.DynamicLinq.Test.csproj +++ b/PoweredSoft.DynamicLinq.Test/PoweredSoft.DynamicLinq.Test.csproj @@ -61,6 +61,8 @@ + + diff --git a/PoweredSoft.DynamicLinq.Test/ShortcutTests.cs b/PoweredSoft.DynamicLinq.Test/ShortcutTests.cs new file mode 100644 index 0000000..16a9078 --- /dev/null +++ b/PoweredSoft.DynamicLinq.Test/ShortcutTests.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using PoweredSoft.DynamicLinq.Extensions; +using PoweredSoft.DynamicLinq.Test.Helpers; + +namespace PoweredSoft.DynamicLinq.Test +{ + internal class MockPersonObject + { + public string FirstName { get; set; } + + public string LastName { get; set; } + + public int Age { get; set; } + } + + [TestClass] + public class ShortcutTests + { + internal List Persons = new List + { + 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] + public void Equal() + { + // test simple + var q1 = Persons.AsQueryable().Query(t => t.Equal("FirstName", "David")); + var q1b = Persons.AsQueryable().Where(t => t.FirstName == "David"); + QueryableAssert.AreEqual(q1, q1b); + + // test and + var q2 = Persons.AsQueryable().Query(t => t.Equal("FirstName", "David").AndEqual("LastName", "Lebee")); + var q2b = Persons.AsQueryable().Where(t => t.FirstName == "David" && t.LastName == "Lebee"); + QueryableAssert.AreEqual(q2, q2b); + + + // test or + var q3 = Persons.AsQueryable().Query(t => t.Equal("FirstName", "David").OrEqual("FirstName", "Michaela")); + var q3b = Persons.AsQueryable().Where(t => t.FirstName == "David" || t.FirstName == "Michaela"); + QueryableAssert.AreEqual(q3, q3b); + } + + [TestMethod] + public void NotEqual() + { + // test simple + var q1 = Persons.AsQueryable().Query(t => t.NotEqual("FirstName", "David")); + var q1b = Persons.AsQueryable().Where(t => t.FirstName != "David"); + QueryableAssert.AreEqual(q1, q1b); + + // test and + var q2 = Persons.AsQueryable().Query(t => t.NotEqual("FirstName", "David").AndNotEqual("FirstName", "Michaela")); + var q2b = Persons.AsQueryable().Where(t => t.FirstName != "David" && t.FirstName != "Michaela"); + QueryableAssert.AreEqual(q2, q2b); + + // test or + var q3 = Persons.AsQueryable().Query(t => t.NotEqual("FirstName", "David").OrNotEqual("LastName", "Lebee")); + var q3b = Persons.AsQueryable().Where(t => t.FirstName != "David" || t.LastName != "Lebee"); + QueryableAssert.AreEqual(q3, q3b); + } + + [TestMethod] + public void GreatThan() + { + var q1 = Persons.AsQueryable().Query(t => t.GreaterThan("Age", 28)); + var q1b = Persons.AsQueryable().Where(t => t.Age > 28); + QueryableAssert.AreEqual(q1, q1b); + } + + [TestMethod] + public void GreatThanOrEqual() + { + + } + + [TestMethod] + public void LessThan() + { + + } + + [TestMethod] + public void LessThanOrEqual() + { + + } + + [TestMethod] + public void StartsWith() + { + + } + + [TestMethod] + public void EndsWith() + { + + } + + [TestMethod] + public void Contains() + { + + } + } +}