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
}
}