示例#1
0
        public void TestPassById()
        {
            ICartDTO dtoCartFiveTimes = new CommonFiveTimesCartDTO();

            Terminal       terminal = new Terminal();
            IBaseCartModel card     = terminal.Create(dtoCartFiveTimes);

            // valid card
            Assert.IsTrue(terminal.PassById(card.ID));

            // fake card
            Assert.IsFalse(terminal.PassById(Guid.NewGuid()));

            // if card is blocked
            card.Block();
            Assert.IsFalse(terminal.PassById(card.ID));

            // the card is run out of limit
            card.UnBlock();
            Assert.IsTrue(terminal.PassById(card.ID));
            terminal.PassById(card.ID);
            terminal.PassById(card.ID);
            terminal.PassById(card.ID);
            Assert.IsFalse(terminal.PassById(card.ID));
        }
        public void TestWitdrawCartPerTime()
        {
            ICartDTO       dto      = new CommonFiveTimesCartDTO();
            Terminal       terminal = new Terminal();
            IBaseCartModel cart     = terminal.Create(dto);

            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.AreEqual(5, cart.GetPassedAmount());
            Assert.IsFalse(terminal.CheckAccess(cart));

            terminal.Withdraw(cart);
            Assert.AreEqual(cart.GetDeclinedAmount(), 1);
        }
示例#3
0
        public void TestCartHasAccessPerTime()
        {
            ICartDTO         dto    = new CommonFiveTimesCartDTO();
            CommonCartFabric fabric = new CommonCartFabric();
            IBaseCartModel   card   = fabric.create(dto);

            Assert.IsTrue(card.HasAccess());
        }
        public void TestCardHasCorrectType()
        {
            ICartDTO         dto    = new CommonOneDayCartDTO();
            CommonCartFabric fabric = new CommonCartFabric();
            IBaseCartModel   card   = fabric.create(dto);

            Assert.IsTrue(card.GetCartType() == Terminal.CART_TYPE_BY_DAY);
        }
示例#5
0
        public void TestCreateCartCommon()
        {
            ICartDTO       dtoCartFiveTimes = new CommonFiveTimesCartDTO();
            Terminal       terminal         = new Terminal();
            IBaseCartModel cart             = terminal.Create(dtoCartFiveTimes);

            Assert.IsTrue(cart is IBaseCartModel);
        }
        public void TestCardHasCorrectTypePerTime()
        {
            Terminal terminal = new Terminal();

            ICartDTO       dto  = new CommonFiveTimesCartDTO();
            IBaseCartModel card = terminal.Create(dto);

            Assert.IsTrue(card.GetCartType() == Terminal.CART_TYPE_BY_TIME);
        }
示例#7
0
        public void TestCreateCartDiscount()
        {
            ICartDTO       dtoWithDiscount     = new DiscountFiftyPercTwentyTimesCartDTO();
            ICartDTO       dtoWithoutDiscount  = new CommonTwentyTimesCartDTO();
            Terminal       terminal            = new Terminal();
            IBaseCartModel cartWithDiscount    = terminal.Create(dtoWithDiscount);
            IBaseCartModel cartWithoutDiscount = terminal.Create(dtoWithoutDiscount);

            int price1 = cartWithDiscount.GetPrice();
            int price2 = cartWithoutDiscount.GetPrice();

            Assert.IsTrue(price1 < price2);
        }
        public void TestBlockCartPerTime()
        {
            ICartDTO       dto      = new CommonFiveTimesCartDTO();
            Terminal       terminal = new Terminal();
            IBaseCartModel cart     = terminal.Create(dto);

            Assert.IsTrue(terminal.CheckAccess(cart));

            terminal.BlockCart(cart);
            Assert.IsFalse(terminal.CheckAccess(cart));

            terminal.UnBlockCart(cart);
            Assert.IsTrue(terminal.CheckAccess(cart));
        }
示例#9
0
        public void TestBlockUnblockCard()
        {
            ICartDTO         dto    = new CommonFiveTimesCartDTO();
            CommonCartFabric fabric = new CommonCartFabric();
            IBaseCartModel   card   = fabric.create(dto);

            Assert.IsTrue(card.HasAccess());

            card.Block();
            Assert.IsFalse(card.HasAccess());

            card.UnBlock();
            Assert.IsTrue(card.HasAccess());
        }
示例#10
0
        public void TestBlockUnblockCard()
        {
            ICartDTO       dtoCardFiveTimes = new CommonFiveTimesCartDTO();
            Terminal       terminal         = new Terminal();
            IBaseCartModel card             = terminal.Create(dtoCardFiveTimes);

            Assert.IsTrue(card.HasAccess());

            card.Block();
            Assert.IsFalse(card.HasAccess());

            card.UnBlock();
            Assert.IsTrue(card.HasAccess());
        }
示例#11
0
        public void TestWithdraw()
        {
            ICartDTO       dtoCartFiveTimes = new CommonFiveTimesCartDTO();
            Terminal       terminal         = new Terminal();
            IBaseCartModel card             = terminal.Create(dtoCartFiveTimes);

            Assert.IsTrue(card.HasAccess());

            terminal.Withdraw(card);
            terminal.Withdraw(card);
            terminal.Withdraw(card);
            terminal.Withdraw(card);
            terminal.Withdraw(card);

            Assert.IsFalse(card.HasAccess());
        }
示例#12
0
        public bool PassById(Guid id)
        {
            IBaseCartModel cart = this.GetCartByID(id);

            if (cart is null)
            {
                return(false);
            }

            if (cart.HasAccess() == false)
            {
                return(false);
            }

            cart.Withdraw();

            return(true);
        }
示例#13
0
 public bool CheckAccess(IBaseCartModel cart)
 {
     return(cart.HasAccess());
 }
示例#14
0
 public void Withdraw(IBaseCartModel cart)
 {
     cart.Withdraw();
 }
示例#15
0
 public void BlockCart(IBaseCartModel model)
 {
     model.Block();
 }