diff UnitTests/Linq/MathFunctions.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/MathFunctions.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,343 @@
+using System;
+using System.Linq;
+using BLToolkit.Data.Linq;
+using NUnit.Framework;
+
+using BLToolkit.Data.DataProvider;
+
+namespace Data.Linq
+{
+	[TestFixture]
+	public class MathFunctions : TestBase
+	{
+		[Test]
+		public void Abs()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Abs(p.MoneyValue) where t > 0 select t,
+				from t in from p in db.Types select Math.Abs(p.MoneyValue) where t > 0 select t));
+		}
+
+        [Test]
+		public void Acos()
+		{
+			ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Acos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Acos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+        [Test]
+		public void Asin()
+		{
+			ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Asin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Asin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Atan()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Atan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Atan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+        [Test]
+		public void Atan2()
+		{
+			ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Atan2((double)p.MoneyValue / 15, 0) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Atan2((double)p.MoneyValue / 15, 0) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Ceiling1()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Ceiling(-(p.MoneyValue + 1)) where t != 0 select t,
+				from t in from p in db.Types select Math.Ceiling(-(p.MoneyValue + 1)) where t != 0 select t));
+		}
+
+		[Test]
+		public void Ceiling2()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Ceiling(p.MoneyValue) where t != 0 select t,
+				from t in from p in db.Types select Math.Ceiling(p.MoneyValue) where t != 0 select t));
+		}
+
+		[Test]
+		public void Cos()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Cos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Cos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Cosh()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Cosh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Cosh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Cot()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Sql.Cot((double)p.MoneyValue / 15).Value * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Sql.Cot((double)p.MoneyValue / 15).Value * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Deegrees1()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Sql.Degrees(p.MoneyValue).Value) where t != 0.1m select t,
+				from t in from p in db.Types select Math.Floor(Sql.Degrees(p.MoneyValue).Value) where t != 0.1m select t));
+		}
+
+		[Test]
+		public void Deegrees2()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Sql.Degrees((double)p.MoneyValue).Value where t != 0.1 select Math.Floor(t),
+				from t in from p in db.Types select Sql.Degrees((double)p.MoneyValue).Value where t != 0.1 select Math.Floor(t)));
+		}
+
+		[Test]
+		public void Deegrees3()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Sql.Degrees((int)p.MoneyValue).Value where t != 0.1 select t,
+				from t in from p in db.Types select Sql.Degrees((int)p.MoneyValue).Value where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Exp()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Exp((double)p.MoneyValue)) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Exp((double)p.MoneyValue)) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Floor()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(-(p.MoneyValue + 1)) where t != 0 select t,
+				from t in from p in db.Types select Math.Floor(-(p.MoneyValue + 1)) where t != 0 select t));
+		}
+
+		[Test]
+		public void Log()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Log((double)p.MoneyValue)) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Log((double)p.MoneyValue)) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Log2()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Log((double)p.MoneyValue, 2)) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Log((double)p.MoneyValue, 2)) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Log10()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Log10((double)p.MoneyValue)) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Log10((double)p.MoneyValue)) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Max()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Max(p.MoneyValue, 5) where t != 0 select t,
+				from t in from p in db.Types select Math.Max(p.MoneyValue, 5) where t != 0 select t));
+		}
+
+		[Test]
+		public void Min()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Min(p.MoneyValue, 5) where t != 0 select t,
+				from t in from p in db.Types select Math.Min(p.MoneyValue, 5) where t != 0 select t));
+		}
+
+		[Test]
+		public void Pow()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Pow((double)p.MoneyValue, 3)) where t != 0 select t,
+				from t in from p in db.Types select Math.Floor(Math.Pow((double)p.MoneyValue, 3)) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round1()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue) where t != 0 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round2()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round((double)p.MoneyValue) where t != 0 select t,
+				from t in from p in db.Types select Math.Round((double)p.MoneyValue) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round3()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t));
+		}
+
+		[Test]
+		public void Round4()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round((double)p.MoneyValue, 1) where t != 0 select Math.Round(t, 5),
+				from t in from p in db.Types select Math.Round((double)p.MoneyValue, 1) where t != 0 select Math.Round(t, 5)));
+		}
+
+		[Test]
+		public void Round5()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round6()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round((double)p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t,
+				from t in from p in db.Types select Math.Round((double)p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round7()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round8()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round((double)p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t,
+				from t in from p in db.Types select Math.Round((double)p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round9()
+		{
+			ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, 1, MidpointRounding.AwayFromZero) where t != 0 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.AwayFromZero) where t != 0 select t));
+		}
+
+		[Test]
+		public void Round10()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t));
+		}
+
+		[Test]
+		public void Round11()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Round((double)p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select Math.Round(t, 5),
+				from t in from p in db.Types select Math.Round((double)p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select Math.Round(t, 5)));
+		}
+
+		[Test]
+		public void Round12()
+		{
+			var mp = MidpointRounding.AwayFromZero;
+
+			ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual(
+				from t in from p in    Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t,
+				from t in from p in db.Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t));
+		}
+
+		[Test]
+		public void Sign()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Sign(p.MoneyValue) where t != 0 select t,
+				from t in from p in db.Types select Math.Sign(p.MoneyValue) where t != 0 select t));
+		}
+
+		[Test]
+		public void Sin()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Sin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Sin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Sinh()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Sinh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Sinh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Sqrt()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Sqrt((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Sqrt((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Tan()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Tan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Tan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Tanh()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Floor(Math.Tanh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Floor(Math.Tanh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
+		}
+
+		[Test]
+		public void Truncate1()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Truncate(p.MoneyValue) where t != 0.1m select t,
+				from t in from p in db.Types select Math.Truncate(p.MoneyValue) where t != 0.1m select t));
+		}
+
+		[Test]
+		public void Truncate2()
+		{
+			ForEachProvider(db => AreEqual(
+				from t in from p in    Types select Math.Truncate((double)-p.MoneyValue) where t != 0.1 select t,
+				from t in from p in db.Types select Math.Truncate((double)-p.MoneyValue) where t != 0.1 select t));
+		}
+	}
+}