diff --git a/LinqStudy.Test/LinqToObject/AggregationTest.cs b/LinqStudy.Test/LinqToObject/AggregationTest.cs index 75fd773..5087d29 100644 --- a/LinqStudy.Test/LinqToObject/AggregationTest.cs +++ b/LinqStudy.Test/LinqToObject/AggregationTest.cs @@ -150,5 +150,232 @@ namespace LinqStudy.Test.LinqToObject Assert.Throws(act); } #endregion + + #region Average + + /// + /// Average:求平均值 + /// + [Fact] + public void Average_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var avgAge = peoples.Average(q => q.Age); + var expected = (28 + 32) / 2; + + Assert.True(avgAge - expected < 0.5); + } + #endregion + + #region Count + + /// + /// Count:序列元素的数量(范围:Int32.MinValue 至 Int32.MaxValue) + /// + [Fact] + public void Count_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var count = peoples.Count(); + var expected = 2; + + Assert.Equal(count, expected); + } + + /// + /// 重载:predicate + /// + [Fact] + public void Count_predicate_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var count = peoples.Count(p=>p.Age>28); + var expected = 1; + + Assert.Equal(count, expected); + } + #endregion + + #region LongCount + + /// + /// Count:序列元素的数量(范围超过:Int32.MaxValue),返回长整形。 + /// + [Fact] + public void LongCount_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var count = peoples.LongCount(); + var expected = 2; + + Assert.Equal(count, expected); + } + + /// + /// 重载:predicate + /// + [Fact] + public void LongCount_predicate_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var count = peoples.LongCount(p => p.Age > 28); + var expected = 1; + + Assert.Equal(count, expected); + } + #endregion + + #region Max + + /// + /// Max:最大值 + /// + [Fact] + public void Max_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="张三丰", Age=230}, + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=3, Name="银花公主", Age=16}, + new Person(){ Id=4, Name="杨过", Age=32}, + new Person(){ Id=5, Name="东方不败", Age=86}, + new Person(){ Id=6, Name="金轮法王", Age=64}, + new Person(){ Id=7, Name="周伯通", Age=98}, + new Person(){ Id=8, Name="洪七公", Age=97}, + new Person(){ Id=9, Name="郭靖", Age=63}, + new Person(){ Id=10, Name="黄蓉", Age=59}, + }; + + var queryMax = peoples.Max(p => p.Age); + var expectedAge = 230; + + Assert.Equal(expectedAge, queryMax); + } + + /// + /// InvalidOperationException 异常 + /// + [Fact] + public void Max_InvalidOperationException_Test() + { + List peoples = new List() + { + + }; + + Action act = () => peoples.Max(p => p.Age); + + Assert.Throws(act); + } + #endregion + + #region Min + + /// + /// Min:最小值 + /// + [Fact] + public void Min_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="张三丰", Age=230}, + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=3, Name="银花公主", Age=16}, + new Person(){ Id=4, Name="杨过", Age=32}, + new Person(){ Id=5, Name="东方不败", Age=86}, + new Person(){ Id=6, Name="金轮法王", Age=64}, + new Person(){ Id=7, Name="周伯通", Age=98}, + new Person(){ Id=8, Name="洪七公", Age=97}, + new Person(){ Id=9, Name="郭靖", Age=63}, + new Person(){ Id=10, Name="黄蓉", Age=59}, + }; + + var queryMin = peoples.Min(p => p.Age); + var expectedAge = 16; + + Assert.Equal(expectedAge, queryMin); + } + + /// + /// InvalidOperationException 异常 + /// + [Fact] + public void Min_InvalidOperationException_Test() + { + List peoples = new List() + { + + }; + + Action act = () => peoples.Min(p => p.Age); + + Assert.Throws(act); + } + #endregion + + #region Sum + + /// + /// Sum:最和 + /// + [Fact] + public void Sum_Default_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + var querySum = peoples.Sum(p => p.Age); + var expectedAge = 60; + + Assert.Equal(expectedAge, querySum); + } + + /// + /// OverflowException 异常 + /// + [Fact] + public void Sum_OverflowException_Test() + { + List peoples = new List() + { + new Person(){ Id=2, Name="小龙女", Age=int.MaxValue}, + new Person(){ Id=4, Name="杨过", Age=32}, + }; + + Action act = () => peoples.Sum(p => p.Age); + + Assert.Throws(act); + } + #endregion } }