聚合操作

master
bicijinlian 6 years ago
parent c3d5c68f2e
commit e54579f0d7

@ -150,5 +150,232 @@ namespace LinqStudy.Test.LinqToObject
Assert.Throws<InvalidOperationException>(act); Assert.Throws<InvalidOperationException>(act);
} }
#endregion #endregion
#region Average
/// <summary>
/// Average:求平均值
/// </summary>
[Fact]
public void Average_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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
/// <summary>
/// Count序列元素的数量(范围Int32.MinValue 至 Int32.MaxValue)
/// </summary>
[Fact]
public void Count_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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);
}
/// <summary>
/// 重载predicate
/// </summary>
[Fact]
public void Count_predicate_Test()
{
List<Person> peoples = new List<Person>()
{
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
/// <summary>
/// Count序列元素的数量(范围超过Int32.MaxValue),返回长整形。
/// </summary>
[Fact]
public void LongCount_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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);
}
/// <summary>
/// 重载predicate
/// </summary>
[Fact]
public void LongCount_predicate_Test()
{
List<Person> peoples = new List<Person>()
{
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
/// <summary>
/// Max最大值
/// </summary>
[Fact]
public void Max_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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);
}
/// <summary>
/// InvalidOperationException 异常
/// </summary>
[Fact]
public void Max_InvalidOperationException_Test()
{
List<Person> peoples = new List<Person>()
{
};
Action act = () => peoples.Max(p => p.Age);
Assert.Throws<InvalidOperationException>(act);
}
#endregion
#region Min
/// <summary>
/// Min最小值
/// </summary>
[Fact]
public void Min_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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);
}
/// <summary>
/// InvalidOperationException 异常
/// </summary>
[Fact]
public void Min_InvalidOperationException_Test()
{
List<Person> peoples = new List<Person>()
{
};
Action act = () => peoples.Min(p => p.Age);
Assert.Throws<InvalidOperationException>(act);
}
#endregion
#region Sum
/// <summary>
/// Sum最和
/// </summary>
[Fact]
public void Sum_Default_Test()
{
List<Person> peoples = new List<Person>()
{
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);
}
/// <summary>
/// OverflowException 异常
/// </summary>
[Fact]
public void Sum_OverflowException_Test()
{
List<Person> peoples = new List<Person>()
{
new Person(){ Id=2, Name="小龙女", Age=int.MaxValue},
new Person(){ Id=4, Name="杨过", Age=32},
};
Action act = () => peoples.Sum(p => p.Age);
Assert.Throws<OverflowException>(act);
}
#endregion
} }
} }

Loading…
Cancel
Save