public void TestDiscountCompilation(Discount discount, CompilerResult compilerResult) { var basketItem1 = new BasketItem(2, null); var basketItem2 = new BasketItem(4, null); Assert.AreEqual(compilerResult.CompiledRule(basketItem1), _compiler.Compile(discount).CompiledRule(basketItem1)); Assert.AreEqual(compilerResult.CompiledRule(basketItem2), _compiler.Compile(discount).CompiledRule(basketItem2)); var actual = _compiler.Compile(discount); Assert.AreEqual(compilerResult.CompiledDiscount(compilerResult.TargetProduct), actual.CompiledDiscount(actual.TargetProduct)); Assert.AreSame(compilerResult.SourceProduct, actual.SourceProduct); Assert.AreSame(compilerResult.TargetProduct, actual.TargetProduct); Assert.AreEqual(compilerResult.RequiredAmount, actual.RequiredAmount); }