public void TestSourceData() { DateTime currTime = DateTime.Now; SourceData data = new SourceData(DateTime.Now, "283948326", "-300"); //2 + 8 + 3 + 9 + 4 + 8 + 3 + 2 + 6 = 45,所以中奖号码为:58326。 //data.OnlineTime = currTime; //data.OnlineTime = currTime; //测试重复赋相同的值的情况。 data.InitialData(currTime, data.OnlineNumber, data.OnlineChange); Assert.ThrowsException <ArgumentOutOfRangeException>(() => { data.InitialData(currTime.AddDays(-15), data.OnlineNumber, data.OnlineChange); }, "所要设置的源数据的 “在线时间” 范围必须要在今天之前和之后的 10 天之内!"); Assert.ThrowsException <ArgumentOutOfRangeException>(() => { data.InitialData(currTime.AddDays(13), data.OnlineNumber, data.OnlineChange); }, "所要设置的源数据的 “在线时间” 范围必须要在今天之前和之后的 10 天之内!"); Assert.AreEqual <string>("-300", data.OnlineChange); Assert.AreEqual <string>("283948326", data.OnlineNumber); Assert.AreEqual <DateTime>(currTime, data.OnlineTime); Assert.IsTrue(data.Equals(data)); //Assert.IsFalse(data.Equals(new SourceData())); Assert.IsFalse(data.Equals(null)); data = new SourceData(DateTime.Now, "283948327", "-301"); Number winNumber = "68327".ToNumber(); Assert.AreEqual <Number>(winNumber, data.WinningNumber); Assert.AreEqual <string>(winNumber.FirstTwo(), data.FirstTwo); Assert.AreEqual <string>(winNumber.LastTwo(), data.LastTwo); Assert.ThrowsException <ArgumentOutOfRangeException>(() => { new SourceData(DateTime.Now, "-123456789", "-301"); }, "在线人数值只能为非 0 的正整数!"); #region 与业务逻辑关系不大,测试值传递和引用传递。 data = new SourceData(DateTime.Now, "123456789", "-301"); string f1 = data.FirstTwo; string l1 = data.LastTwo; string c1 = data.OnlineChange; SourceData data1 = (SourceData)data.Clone(); Assert.IsFalse(object.ReferenceEquals(data, data1)); string f2 = data1.FirstTwo; string l2 = data1.LastTwo; string c2 = data1.OnlineChange; Assert.IsFalse(object.ReferenceEquals(data.FirstTwo, data1.FirstTwo)); //为 false,因为 LastTwo 和 FirstTwo 属性都是通过 SourceData 对象的 OnlineNmuber 来重新计算并创建的。 Assert.IsFalse(object.ReferenceEquals(data.LastTwo, data1.LastTwo)); //为 false,因为 LastTwo 和 FirstTwo 属性都是通过 SourceData 对象的 OnlineNmuber 来重新计算并创建的。 Assert.IsTrue(object.ReferenceEquals(data.OnlineChange, data1.OnlineChange)); //比较不解,为什么结果是 True?而上面同样是 string 类型的属性却为 False。 Assert.IsTrue(object.ReferenceEquals(data.OnlineNumber, data1.OnlineNumber)); //估计结果和 OnlineChange 属性类似。 Assert.IsFalse(object.ReferenceEquals(data.OnlineTime, data1.OnlineTime)); //估计是因为 DateTime 是值类型,赋值的是拷贝,所以两个不是同一个引用? Assert.IsFalse(object.ReferenceEquals(data.WinningNumber, data1.WinningNumber)); #endregion }