Mercurial > pub > bltoolkit
diff UnitTests/Linq/SelectScalar.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UnitTests/Linq/SelectScalar.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,218 @@ +using System; +using System.Linq; + +using BLToolkit.Data.Linq; + +using NUnit.Framework; + +namespace Data.Linq +{ + using Model; + + [TestFixture] + public class SelectScalar : TestBase + { + [Test] + public void Parameter1() + { + var p = 1; + ForEachProvider(db => Assert.AreEqual(p, db.Select(() => p))); + } + + [Test] + public void Parameter2() + { + ForEachProvider(db => + { + var p = 1; + Assert.AreEqual(p, db.Select(() => new { p }).p); + }); + } + + [Test] + public void Constant1() + { + ForEachProvider(db => Assert.AreEqual(1, db.Select(() => 1))); + } + + [Test] + public void Constant2() + { + ForEachProvider(db => Assert.AreEqual(1, db.Select(() => new { p = 1 }).p)); + } + + [Test] + public void Constant3() + { + ForEachProvider(db => Assert.AreEqual(1, db.Select(() => new Person { ID = 1, FirstName = "John" }).ID)); + } + + [Test] + public void StrLen() + { + ForEachProvider(db => Assert.AreEqual("1".Length, db.Select(() => "1".Length))); + } + + [Test] + public void IntMaxValue() + { + ForEachProvider(db => Assert.AreEqual(int.MaxValue, db.Select(() => int.MaxValue))); + } + + [Test] + public void Substring() + { + const string s = "123"; + ForEachProvider(db => Assert.AreEqual(s.Substring(1), db.Select(() => s.Substring(1)))); + } + + [Test] + public void Add() + { + const string s = "123"; + ForEachProvider(db => Assert.AreEqual(s.Substring(1).Length + 3, db.Select(() => s.Substring(1).Length + 3))); + } + + [Test] + public void Scalar1() + { + ForEachProvider(db => + { + var q = (from p in db.Person select new { p } into p1 select p1.p).ToList().Where(p => p.ID == 1).First(); + Assert.AreEqual(1, q.ID); + }); + } + + [Test] + public void Scalar11() + { + ForEachProvider(db => + { + var n = (from p in db.Person select p.ID).ToList().Where(id => id == 1).First(); + Assert.AreEqual(1, n); + }); + } + + [Test] + public void Scalar2() + { + ForEachProvider(db => + { + var q = (from p in db.Person select new { p }).ToList().Where(p => p.p.ID == 1).First(); + Assert.AreEqual(1, q.p.ID); + }); + } + + [Test] + public void Scalar21() + { + ForEachProvider(db => + { + var n = (from p in db.Person select p.FirstName.Length).ToList().Where(len => len == 4).First(); + Assert.AreEqual(4, n); + }); + } + + [Test] + public void Scalar22() + { + var expected = + from p in Person + select new { p1 = p, p2 = p } + into p1 + where p1.p1.ID == 1 && p1.p2.ID == 1 + select p1; + + ForEachProvider(db => + { + var result = + from p in db.Person + select new { p1 = p, p2 = p } + into p1 + where p1.p1.ID == 1 && p1.p2.ID == 1 + select p1; + + Assert.IsTrue(result.ToList().SequenceEqual(expected)); + }); + } + + [Test] + public void Scalar23() + { + var expected = + from p in Person + select p.ID + into p1 + where p1 == 1 + select new { p1 }; + + ForEachProvider(db => + { + var result = + from p in db.Person + select p.ID + into p1 + where p1 == 1 + select new { p1 }; + + Assert.IsTrue(result.ToList().SequenceEqual(expected)); + }); + } + + [Test] + public void Scalar3() + { + var expected = from p in Person where p.ID == 1 select 1; + + ForEachProvider(db => + { + var result = from p in db.Person where p.ID == 1 select 1; + Assert.IsTrue(result.ToList().SequenceEqual(expected)); + }); + } + + [Test] + public void Scalar31() + { + var n = 1; + var expected = from p in Person where p.ID == 1 select n; + + ForEachProvider(db => + { + var result = from p in db.Person where p.ID == 1 select n; + Assert.IsTrue(result.ToList().SequenceEqual(expected)); + }); + } + + [Test] + public void Scalar4() + { + var expected = + from p in Parent + join c in Child on p.ParentID equals c.ParentID + where c.ChildID > 20 + select p; + + ForEachProvider(db => + { + var result = + from p in db.Parent + join c in db.Child on p.ParentID equals c.ParentID + where c.ChildID > 20 + select p; + + Assert.AreEqual(expected.Where(p => p.ParentID == 3).First(), result.Where(p => p.ParentID == 3).First()); + }); + } + + [Test] + public void Function() + { + var text = "123"; + + ForEachProvider(db => Assert.AreEqual( + Child.Select(c => string.Format("{0},{1}", c.ChildID, text)).FirstOrDefault(), + db.Child.Select(c => string.Format("{0},{1}", c.ChildID, text)).FirstOrDefault())); + } + } +}