From 6032f5cc0dcde7ad7bdd332513e1d911bd3c7d7d Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Fri, 6 Sep 2019 23:37:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=83=E7=B4=A0=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LinqStudy.Test/LinqToObject/ElementTest.cs | 455 ++++++++++++++++++ .../LinqToObject/TypeConvertTest.cs | 2 - LinqStudy.Test/LinqToObject/WhereTest.cs | 34 ++ 3 files changed, 489 insertions(+), 2 deletions(-) create mode 100644 LinqStudy.Test/LinqToObject/ElementTest.cs create mode 100644 LinqStudy.Test/LinqToObject/WhereTest.cs diff --git a/LinqStudy.Test/LinqToObject/ElementTest.cs b/LinqStudy.Test/LinqToObject/ElementTest.cs new file mode 100644 index 0000000..3918a6a --- /dev/null +++ b/LinqStudy.Test/LinqToObject/ElementTest.cs @@ -0,0 +1,455 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using Xunit; + +namespace LinqStudy.Test.LinqToObject +{ + /// + /// 元素操作 + /// + public class ElementTest + { + #region First + /// + /// First:获取第一个元素,延迟执行。 + /// + [Fact] + public void First_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var queryFrist = peoples.First(); + var firstItemName = queryFrist.Name; + + Assert.Equal("wanggaofeng", firstItemName); + } + + [Fact] + public void First_where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var queryFrist = peoples.First(q => q.Age > 32); + var firstItemName = queryFrist.Name; + + Assert.Equal("wanggaofeng", firstItemName); + } + + [Fact] + public void First_ArgumentNullException_Test() + { + List peoples = null; + + Action queryFirstAct = () => peoples.First(); + + Assert.Throws(queryFirstAct); + } + + /// + /// 查不到数据时,异常。 + /// + [Fact] + public void First_InvalidOperationException_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + Action queryFrist =() => peoples.First(q => q.Age > 100); + + + Assert.Throws(queryFrist); + } + #endregion + + #region FirstOrDefault + /// + /// FirstOrDefault:获取第一个元素或默认值,延迟执行。 + /// + [Fact] + public void FirstOrDefault_Frist() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var queryFrist = peoples.FirstOrDefault(); + var firstItemName = queryFrist.Name; + + Assert.Equal("wanggaofeng", firstItemName); + } + + [Fact] + public void FirstOrDefault_Default() + { + List peoples = new List(); + + var queryFrist = peoples.FirstOrDefault(); + var firstItem = queryFrist; + + Assert.Null(firstItem); + } + + [Fact] + public void FirstOrDefault_Where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var queryFrist = peoples.FirstOrDefault(q => q.Age > 32); + var firstItemName = queryFrist.Name; + + Assert.Equal("wanggaofeng", firstItemName); + } + + [Fact] + public void FirstOrDefault_ArgumentNullException_Test() + { + List peoples = null; + + Action queryFirstAct = () => peoples.First(); + + Assert.Throws(queryFirstAct); + } + + /// + /// 查不到数据时,不异常。 + /// + [Fact] + public void FirstOrDefault_No_InvalidOperationException() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var defaultItem = peoples.FirstOrDefault(q => q.Age > 100); + + Assert.Null(defaultItem); + } + #endregion + + #region Last + /// + /// First:获取最后一个元素,延迟执行。 + /// + [Fact] + public void Last_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var lastItem = peoples.Last(); + var lastItemName = lastItem.Name; + + Assert.Equal("lishi", lastItemName); + } + + [Fact] + public void Last_where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var lastItem = peoples.Last(q => q.Age > 32); + var lastItemName = lastItem.Name; + + Assert.Equal("wangwu", lastItemName); + } + + [Fact] + public void Last_ArgumentNullException_Test() + { + List peoples = null; + + Action queryAction = () => peoples.First(); + + Assert.Throws(queryAction); + } + + /// + /// 查不到数据时,异常。 + /// + [Fact] + public void Last_InvalidOperationException_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + Action lastAction = () => peoples.Last(q => q.Age > 100); + + Assert.Throws(lastAction); + } + #endregion + + #region LastOrDefault + /// + /// LastOrDefault:获取最后一个元素或默认值,延迟执行。 + /// + [Fact] + public void LastOrDefault_Last() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var queryItem = peoples.LastOrDefault(); + var lastItemName = queryItem.Name; + + Assert.Equal("lishi", lastItemName); + } + + [Fact] + public void LastOrDefault_Default() + { + List peoples = new List(); + + var queryItem = peoples.LastOrDefault(); + + Assert.Null(queryItem); + } + + [Fact] + public void LastOrDefault_Where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var queryItem = peoples.LastOrDefault(q => q.Age > 32); + var lastItemName = queryItem.Name; + + Assert.Equal("wangwu", lastItemName); + } + + [Fact] + public void LastOrDefault_ArgumentNullException_Test() + { + List peoples = null; + + Action queryLastItme = () => peoples.LastOrDefault(); + + Assert.Throws(queryLastItme); + } + + /// + /// 查不到数据时,不异常。 + /// + [Fact] + public void LastOrDefault_No_InvalidOperationException() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var defaultItem = peoples.LastOrDefault(q => q.Age > 100); + + Assert.Null(defaultItem); + } + #endregion + + #region Single + /// + /// Single:获取单个元素,延迟执行。 + /// + [Fact] + public void Single_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33} + }; + + var queryItem = peoples.Single(); + var singleName = queryItem.Name; + + Assert.Equal("wanggaofeng", singleName); + } + + [Fact] + public void Single_where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var singleQuery = peoples.Single(q => q.Age > 33); + var singleItemName = singleQuery.Name; + + Assert.Equal("wangwu", singleItemName); + } + + [Fact] + public void Single_ArgumentNullException_Test() + { + List peoples = null; + + Action singleQueryAction = () => peoples.Single(); + + Assert.Throws(singleQueryAction); + } + + /// + /// 查不到数据时,异常。 + /// + [Fact] + public void Single_QueryEmpty_InvalidOperationException() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + Action singleQueryAction = () => peoples.Single(q => q.Age > 100); + + + Assert.Throws(singleQueryAction); + } + + /// + /// 查询到多条记录,异常 + /// + [Fact] + public void Single_QueryManyItem_InvalidOperationException() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + Action singleQueryAction = () => peoples.Single(q => q.Age > 0); + + + Assert.Throws(singleQueryAction); + } + #endregion + + #region SingleOrDefault + /// + /// SingleOrDefault:获取单个元素或默认值,延迟执行。 + /// + [Fact] + public void SingleOrDefault_Last() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33} + }; + + var queryItem = peoples.SingleOrDefault(); + var singleItemName = queryItem.Name; + + Assert.Equal("wanggaofeng", singleItemName); + } + + [Fact] + public void SingleOrDefault_Default() + { + List peoples = new List(); + + var queryItem = peoples.SingleOrDefault(); + + Assert.Null(queryItem); + } + + [Fact] + public void SingleOrDefault_Where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + new Person(){ Id=3, Name="wangwu", Age=44}, + }; + + var queryItem = peoples.SingleOrDefault(q => q.Id > 2); + var sigleItemName = queryItem.Name; + + Assert.Equal("wangwu", sigleItemName); + } + + [Fact] + public void SingleOrDefault_ArgumentNullException() + { + List peoples = null; + + Action queryAction = () => peoples.LastOrDefault(); + + Assert.Throws(queryAction); + } + + /// + /// 查询不到数据,不异常 + /// + [Fact] + public void SingleOrDefault_QueryEmpty_NoArgumentNullException() + { + List peoples = new List(); + + var queryItme = peoples.SingleOrDefault(); + + Assert.Null(queryItme); + } + + /// + /// 查到多条数据时,异常。 + /// + [Fact] + public void SingleOrDefault_No_InvalidOperationException() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + Action singleOrDefalutAction =() => peoples.SingleOrDefault(q => q.Age > 0); + + Assert.Throws(singleOrDefalutAction); + } + #endregion + } +} diff --git a/LinqStudy.Test/LinqToObject/TypeConvertTest.cs b/LinqStudy.Test/LinqToObject/TypeConvertTest.cs index 349e366..8cd6c0b 100644 --- a/LinqStudy.Test/LinqToObject/TypeConvertTest.cs +++ b/LinqStudy.Test/LinqToObject/TypeConvertTest.cs @@ -184,8 +184,6 @@ namespace LinqStudy.Test.LinqToObject new Person() {Id=2, Name="zhangsan",Age = 25 }, }; - IEqualityComparer equal = new PersonEqual(); - var dic = persons.ToDictionary(p => p.Id, EqualityComparer.Default); Assert.Equal("gaofeng", dic[1].Name); diff --git a/LinqStudy.Test/LinqToObject/WhereTest.cs b/LinqStudy.Test/LinqToObject/WhereTest.cs new file mode 100644 index 0000000..79d5564 --- /dev/null +++ b/LinqStudy.Test/LinqToObject/WhereTest.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; +using System.Collections; +using System.Collections.Generic; + +using Xunit; + +namespace LinqStudy.Test.LinqToObject +{ + + /// + /// 选件筛选 + /// + public class WhereTest + { + /// + /// Where:条件筛选操作,延迟执行 + /// + [Fact] + public void Where_Test() + { + List peoples = new List() + { + new Person(){ Id=1, Name="wanggaofeng", Age=33}, + new Person(){ Id=2, Name="lishi", Age=32}, + }; + + var query = peoples.Where(q => q.Name.StartsWith("wang")); + var selectId = query.FirstOrDefault().Id; + + Assert.Equal(1, selectId); + } + } +}