diff --git a/LinqStudy.Test/LinqToObject/CreateTest.cs b/LinqStudy.Test/LinqToObject/CreateTest.cs
index 407a8f0..6a9bafb 100644
--- a/LinqStudy.Test/LinqToObject/CreateTest.cs
+++ b/LinqStudy.Test/LinqToObject/CreateTest.cs
@@ -17,9 +17,6 @@ namespace LinqStudy.Test.LinqToObject
/// Empty 返回指定类型的空集,没有任何元素的集合。
/// Enumerable的静态方法,常用来做初始种子集合。
///
- ///
- /// Enumerable
- ///
[Fact]
public void Empty_string_Test()
{
@@ -40,5 +37,84 @@ namespace LinqStudy.Test.LinqToObject
Assert.IsType(ini);
Assert.Empty(ini);
}
+
+ ///
+ /// DefaultIfEmpty
+ /// 如果数据源没有项,就添加一项,项的值为类型默认值
+ ///
+ [Fact]
+ public void DefaultIfEmpty_Test()
+ {
+ var defaultValue= Enumerable.DefaultIfEmpty(Enumerable.Empty());
+
+ Assert.Single(defaultValue);
+ Assert.Equal(default(int), defaultValue.First());
+ }
+ ///
+ /// 数据源为Null时,抛出异常。
+ ///
+ [Fact]
+ public void DefaultIfEmpty_Class_Test()
+ {
+ var defaultValue = Enumerable.DefaultIfEmpty(Enumerable.Empty());
+
+ Assert.Single(defaultValue);
+ Assert.Equal(default(Person), defaultValue.First());
+ }
+
+ ///
+ /// Range:生成指定范围的整数序列
+ ///
+ [Fact]
+ public void Range_Test()
+ {
+ //生成1-100整数序列
+ var values = Enumerable.Range(1, 100);
+
+ Assert.Equal(100, values.Count());
+ Assert.Equal(1, values.ElementAt(0));
+ }
+
+ ///
+ /// Repeat:重复填充序列
+ /// 先生成一项,使用浅拷贝技术,重复填充其它项。
+ /// 如果是引用对象,所有序列均是对同一对象的引用。
+ ///
+ [Fact]
+ public void Repeat_Test()
+ {
+ //生成100项值均为"test@163.com"的字符串序列
+ var values = Enumerable.Repeat("test@163.com", 100);
+
+ Array.ForEach(values.ToArray(), (emai) => {
+ Assert.Equal("test@163.com", emai);
+ });
+ }
+
+ ///
+ /// 注意:对象只生成一个,其它使用浅拷贝进行填充,值一样!
+ ///
+ [Fact]
+ public void Repeat_TestData_Test()
+ {
+ //生成测试数据:生成了有100项的一个序列,这100项均是对同一个对象的引用,而不是100个对象。
+
+ Random rdm = new Random(DateTime.Now.Ticks.GetHashCode());
+ //虽然生成时,用了随机数,但是因对象只生成了一次,其它均是这个对象的浅拷贝,所以100个对象,完全相同:100个对同一对象的引用。
+ var persons = Enumerable.Repeat(new Person()
+ {
+ Id = DateTime.Now.Millisecond,
+ Name = "王小明",
+ Age = rdm.Next(1, 100)
+ }, 100).ToList();
+
+ Assert.Equal(100, persons.Count);
+
+ //所有对象引用相同
+ Assert.All(persons, (p) =>
+ {
+ Assert.Same(persons[0], p);
+ });
+ }
}
}