static void Main(string[] args)
        {
            Console.WriteLine("Do something usual\n");
            ATMMachine atmMachine = new ATMMachine();

            atmMachine.InsertCard();
            atmMachine.InsertPin(1234);
            atmMachine.RequestCash(10000);
            atmMachine.EjectCard();

            Console.WriteLine("\n\n\nDo something unusual\n");
            atmMachine.RequestCash(10000);
            atmMachine.InsertPin(1234);
            atmMachine.RequestCash(10000);
            atmMachine.EjectCard();

            Console.Write("\n\n\n");

            int           ch;
            ButtonMachine button = null;

            do
            {
                if (button == null)
                {
                    button = new ButtonMachine();
                }
                else
                {
                    button.Push();
                }
                Console.WriteLine("Push \"Enter\"");
                ch = Console.ReadKey().KeyChar;
            } while (ch == 13);
        }
示例#2
0
 public static void Main(string[] args)
 {
     ATMMachine atm = new ATMMachine();
     IList<BankNote> list = atm.GetAmount(235);
     Console.WriteLine("The notes handed out by the ATM machine are:");
     BankNote.PrintList(list);
     Console.WriteLine("");
 }
示例#3
0
        public static void RunState()
        {
            ATMMachine atm = new ATMMachine();

            atm.insertCard();
            atm.ejectCard();
            atm.insertCard();
            atm.insertPin(1234);
            atm.requestCash(2000);
            atm.insertCard();
            atm.insertPin(1234);
        }
        // Use this for initialization
        void OnEnable()
        {
            Debug.Log("------------------");
            Debug.Log("PROXY DESIGN PATTERN");

            GetATMData realATMMachine = new ATMMachine();
            GetATMData atmProxy       = new ATMProxy();

            Debug.Log("Current State: " + atmProxy.GetCurrentState());
            Debug.Log("Current Cash in Machine: " + atmProxy.GetCashInMachine());

            //atmProxy.setCashInMachine << not possible because not defined in the interface
        }
示例#5
0
        static void Main(string[] args)
        {
            ATMMachine atmMachine = new ATMMachine();

            atmMachine.InsertCard();
            atmMachine.EjectCard();

            atmMachine.InsertCard();

            atmMachine.insertPin(1234);
            atmMachine.RquestCash(2000);

            atmMachine.InsertCard();
            atmMachine.insertPin(1234);
        }
示例#6
0
        public static void Main()
        {
            var atm = new ATMMachine();

            atm.InsertCard();
            atm.EjectCard();

            atm.InsertCard();
            atm.InsertCard();

            atm.InsertPin(1234);
            atm.RequestCash(150);

            atm.EjectCard();
            atm.InsertCard();
            atm.InsertPin(1234);
        }
示例#7
0
        public static void Main_()
        {
            ATMMachine atmMachine = new ATMMachine();

            atmMachine.insertCard();

            atmMachine.ejectCard();

            atmMachine.insertCard();

            atmMachine.insertPin(1234);

            atmMachine.requestCash(2000);

            atmMachine.insertCard();

            atmMachine.insertPin(1234);
        }
示例#8
0
    void Start()
    {
        ATMMachine atmMachine = new ATMMachine();

        atmMachine.insertCard();

        atmMachine.ejectCard();

        atmMachine.insertCard();

        atmMachine.insertPin(1234);

        atmMachine.requestCash(2000);

        atmMachine.insertCard();

        atmMachine.insertPin(1234);
    }
示例#9
0
        public void Test_bank_card()
        {
            Server server = new Server.Builder().SetCardNumberDB("9856 4587 5656 2325")
                            .SetOwnerNameDB("John Smith")
                            .SetMoneyDB(100000)
                            .SetPinDB("6981")
                            .Build();

            ATMMachine machine = new ATMMachine(server);

            Card cardA = new Card {
                CardNumber = "9856 4587 5656 2325", OnwerName = "John Smith"
            };
            Card cardB = new Card {
                CardNumber = "9476 4587 1666 2345", OnwerName = "John Smith"
            };
            Card cardC = new Card {
                CardNumber = "9856 4587 5656 2325", OnwerName = "Mary Smith"
            };

            {
                machine.InsertDebitCard(card: cardA);

                Assert.That(machine.EnterPin("6981"), Is.EqualTo(true));
                Assert.That(machine.WithdrawMoney(5000), Is.EqualTo(true));
                Assert.That(machine.WithdrawMoney(200000), Is.EqualTo(false));

                Assert.Throws <InvalidOperationException>(() => machine.InsertDebitCard(card: cardA), "Card already in machine, can not insert more than 1 card.");

                machine.EjectDebitCard();

                Assert.Throws <InvalidOperationException>(() => machine.EnterPin("15354"), "Card not found, can not enter pin.");
                Assert.Throws <InvalidOperationException>(() => machine.EjectDebitCard(), "Card not found, can not eject card.");
            }

            {
                Assert.Throws <ArgumentException>(() => machine.InsertDebitCard(card: cardB), "Card with this number does not exist in DB.");
            }

            {
                Assert.Throws <ArgumentException>(() => machine.InsertDebitCard(card: cardC), "Card with this name does not exist in DB.");
            }
        }
示例#10
0
        static void Main(string[] args)
        {
            //ATM machine being used directly.
            ATMMachine atmMachine = new ATMMachine();

            Console.WriteLine("Using Machine directly");
            Console.WriteLine(atmMachine.getATMState());
            Console.WriteLine(atmMachine.GetCashInMachine());
            atmMachine.SetCashInATMMachine(50000);
            Console.WriteLine(atmMachine.GetCashInMachine());
            atmMachine.StartMaintainace();
            atmMachine.StartWorking();

            //ATM machine being used as a secure proxy to just get the cash present in machine and check the state.
            IATMData machine = new ATMProxy();

            Console.WriteLine("Using Proxy");
            machine.getATMState();
            machine.GetCashInMachine();
        }
示例#11
0
 public void InsertCard(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new HasCard());
     Console.WriteLine("\tCard is already inserted.");
 }
示例#12
0
 public void EjectCard(ATMMachine aTMMachine)
 {
     aTMMachine.ChangeState(new NoCard());
     Console.WriteLine("\tCard is ejected.");
 }
示例#13
0
        public int GetATMCash()
        {
            ATMMachine atmMachine = new ATMMachine();

            return(atmMachine.GetATMCash());
        }
示例#14
0
        public int GetATMStatus()
        {
            ATMMachine atmMachine = new ATMMachine();

            return(atmMachine.GetATMStatus());
        }
示例#15
0
文件: HasPin.cs 项目: yellowshq/MyMVC
 public HasPin(ATMMachine newATMMachine)
 {
     atmMachine = newATMMachine;
 }
示例#16
0
 public HasCard(ATMMachine newATMMachine)
 {
     atmMachine = newATMMachine;
 }
        public int GetCashInMachine()
        {
            ATMMachine atm = new ATMMachine();

            return(atm.GetCashInMachine());
        }
示例#18
0
 public NoCard(ATMMachine newATMMachine)
 {
     this.atmMachine = newATMMachine;
 }
 public void InsertPin(ATMMachine aTMMachine)
 {
     aTMMachine.ChangeState(new HasPin());
     Console.WriteLine("\tPin is inserted.");
 }
        public ATMState GetCurrentState()
        {
            ATMMachine atm = new ATMMachine();

            return(atm.GetCurrentState());
        }
示例#21
0
 public NoCash(ATMMachine newATMMachine)
 {
     atmMachine = newATMMachine;
 }
 public void RequestCash(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new HasCard());
     Console.WriteLine("\tPin must be inserted first!");
 }
示例#23
0
 public void InsertPin(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new NoCard());
     Console.WriteLine("\tPin is already inserted.");
 }
示例#24
0
 public void InsertPin(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new Has());
     Console.WriteLine("\tNo card to be inserted.");
 }
示例#25
0
 public void EjectCard(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new NoCard());
     Console.WriteLine("\tNo card to be ejected.");
 }
示例#26
0
 public void RequestCash(ATMMachine aTMMachine)
 {
     Console.WriteLine("\tCash is withdrawn.");
 }
示例#27
0
 public void RequestCash(ATMMachine aTMMachine)
 {
     //aTMMachine.ChangeState(new HasCard());
     Console.WriteLine("\tNo cash to be withdrawn.");
 }