public void DoAutoMatchProcessEmptyDataTest() { // 可兑换礼品列表. List <IAutoMatchAble> baseDataList = new List <IAutoMatchAble>(); // 构造处理类. IAutoMatchProcesser autoMatchProcesser = new BiggerFirstAutoMatchProcesser() { BaseDataList = baseDataList, }; // 处理结果变量定义. List <AutoMatchResult> actual = null; // 执行自动分摊计算, 积分 1500. (预期结果: 空白列表 ) actual = autoMatchProcesser.DoAutoMatchProcess(1500); // 结果非空. Assert.IsNotNull(actual); // 结果列表只有 0行. Assert.AreEqual(0, actual.Count); }
public void DoAutoMatchProcessOnlyOneDataTest() { // 可兑换礼品列表. List <IAutoMatchAble> baseDataList = new List <IAutoMatchAble>() { new AutoMatchAbleTest("C", 500), }; // 构造处理类. IAutoMatchProcesser autoMatchProcesser = new BiggerFirstAutoMatchProcesser() { BaseDataList = baseDataList, }; // 处理结果变量定义. List <AutoMatchResult> actual = null; // 执行自动分摊计算, 积分 1500. (预期结果: 3C ) actual = autoMatchProcesser.DoAutoMatchProcess(1500); // 结果非空. Assert.IsNotNull(actual); // 结果列表只有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 3 Assert.AreEqual(3, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1200. (预期结果: 2C ) actual = autoMatchProcesser.DoAutoMatchProcess(1200); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 剩余积分数量为 200 Assert.AreEqual(200, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 700. (预期结果: 1C ) actual = autoMatchProcesser.DoAutoMatchProcess(700); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 200 Assert.AreEqual(200, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 100. (预期结果: 空白列表 ) actual = autoMatchProcesser.DoAutoMatchProcess(100); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 0行. Assert.AreEqual(0, actual.Count); // 剩余积分数量为 100 Assert.AreEqual(100, autoMatchProcesser.RemainderValue); }
public void DoAutoMatchProcessTest() { // 可兑换礼品列表. List <IAutoMatchAble> baseDataList = new List <IAutoMatchAble>() { new AutoMatchAbleTest("A", 300), new AutoMatchAbleTest("C", 500), new AutoMatchAbleTest("B", 400), }; // 构造处理类. IAutoMatchProcesser autoMatchProcesser = new BiggerFirstAutoMatchProcesser() { BaseDataList = baseDataList, }; // 处理结果变量定义. List <AutoMatchResult> actual = null; // 执行自动分摊计算, 积分 1500. (预期结果: 3C ) actual = autoMatchProcesser.DoAutoMatchProcess(1500); // 结果非空. Assert.IsNotNull(actual); // 结果列表只有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 3 Assert.AreEqual(3, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1400. (预期结果: 2C 1B ) actual = autoMatchProcesser.DoAutoMatchProcess(1400); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 2行. Assert.AreEqual(2, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 商品代码为 B Assert.AreEqual("B", actual[1].ID); // 商品数量为 1 Assert.AreEqual(1, actual[1].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1300. (预期结果: 2C 1A ) actual = autoMatchProcesser.DoAutoMatchProcess(1300); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 2行. Assert.AreEqual(2, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 商品代码为 A Assert.AreEqual("A", actual[1].ID); // 商品数量为 1 Assert.AreEqual(1, actual[1].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1200. (预期结果: 2C ) actual = autoMatchProcesser.DoAutoMatchProcess(1200); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 剩余积分数量为 200 Assert.AreEqual(200, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1100. (预期结果: 2C ) actual = autoMatchProcesser.DoAutoMatchProcess(1100); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 剩余积分数量为 100 Assert.AreEqual(100, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 1000. (预期结果: 2C ) actual = autoMatchProcesser.DoAutoMatchProcess(1000); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 2 Assert.AreEqual(2, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 900. (预期结果: 1C 1B ) actual = autoMatchProcesser.DoAutoMatchProcess(900); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 2行. Assert.AreEqual(2, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 商品代码为 B Assert.AreEqual("B", actual[1].ID); // 商品数量为 1 Assert.AreEqual(1, actual[1].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 800. (预期结果: 1C 1A ) actual = autoMatchProcesser.DoAutoMatchProcess(800); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 2行. Assert.AreEqual(2, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 商品代码为 A Assert.AreEqual("A", actual[1].ID); // 商品数量为 1 Assert.AreEqual(1, actual[1].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 700. (预期结果: 1C ) actual = autoMatchProcesser.DoAutoMatchProcess(700); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 200 Assert.AreEqual(200, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 600. (预期结果: 1C ) actual = autoMatchProcesser.DoAutoMatchProcess(600); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 100 Assert.AreEqual(100, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 500. (预期结果: 1C ) actual = autoMatchProcesser.DoAutoMatchProcess(500); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 C Assert.AreEqual("C", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 400. (预期结果: 1B ) actual = autoMatchProcesser.DoAutoMatchProcess(400); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 B Assert.AreEqual("B", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 300. (预期结果: 1A ) actual = autoMatchProcesser.DoAutoMatchProcess(300); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 1行. Assert.AreEqual(1, actual.Count); // 商品代码为 A Assert.AreEqual("A", actual[0].ID); // 商品数量为 1 Assert.AreEqual(1, actual[0].Count); // 剩余积分数量为 0 Assert.AreEqual(0, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 200. (预期结果: 空白列表 ) actual = autoMatchProcesser.DoAutoMatchProcess(200); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 0行. Assert.AreEqual(0, actual.Count); // 剩余积分数量为 200 Assert.AreEqual(200, autoMatchProcesser.RemainderValue); // 执行自动分摊计算, 积分 100. (预期结果: 空白列表 ) actual = autoMatchProcesser.DoAutoMatchProcess(100); // 结果非空. Assert.IsNotNull(actual); // 结果列表有 0行. Assert.AreEqual(0, actual.Count); // 剩余积分数量为 100 Assert.AreEqual(100, autoMatchProcesser.RemainderValue); }