public void ChangeTwentiesShouldBeSettable()
        {
            UpdateCashDrawer u = new UpdateCashDrawer(0);

            u.ChangeTwenties = 1;
            Assert.Equal(1, u.ChangeTwenties);
        }
        public void ChangeHalfDollarsShouldBeSettable()
        {
            UpdateCashDrawer u = new UpdateCashDrawer(0);

            u.ChangeHalfDollars = 1;
            Assert.Equal(1, u.ChangeHalfDollars);
        }
        public void TotalCostGetterShouldGetCorrectNumber()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            Assert.Equal(o.Total, u.TotalCost);
        }
        public void ChangeHundredsShouldBeSettable()
        {
            UpdateCashDrawer u = new UpdateCashDrawer(0);

            u.ChangeHundreds = 1;
            Assert.Equal(1, u.ChangeHundreds);
        }
        public void TotalPaidGetterShouldGetCorrectNumber()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            u.PaidTens = 1;
            Assert.Equal(10, u.TotalPaid);
        }
        public void ChangingChangePenniesShouldNotifyPropertyChanged()
        {
            UpdateCashDrawer u = new UpdateCashDrawer(0);

            Assert.PropertyChanged(u, "ChangePennies", () =>
            {
                u.ChangePennies++;
            });
        }
        public void ChangingPaidPenniesShouldNotifyPaidPenniesProperty()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            Assert.PropertyChanged(u, "PaidPennies", () =>
            {
                u.PaidPennies++;
            });
        }
        public void ChangingPaidHundredsShouldNotifyFinalizeSaleButtonEnabledProperty()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            Assert.PropertyChanged(u, "FinalizeSaleButtonEnabled", () =>
            {
                u.PaidHundreds++;
            });
        }
        public void ChangingPaidHundredsShouldNotifyAmountDueProperty()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            Assert.PropertyChanged(u, "AmountDue", () =>
            {
                u.PaidHundreds++;
            });
        }
        public void ChangingPaidTensShouldNotifyTotalPaidProperty()
        {
            Order            o = new Order();
            UpdateCashDrawer u = new UpdateCashDrawer(o.Total);

            Assert.PropertyChanged(u, "TotalPaid", () =>
            {
                u.PaidTens++;
            });
        }
        public void AmountDueGetterShouldGetCorrectNumber(int paidOnes, double totalCost)
        {
            UpdateCashDrawer u = new UpdateCashDrawer(totalCost);

            u.PaidOnes = paidOnes;
            double amountDue = Math.Round(totalCost - paidOnes, 2);

            if (amountDue < 0)
            {
                Assert.Equal(0, u.AmountDue);
            }
            else
            {
                Assert.Equal(amountDue, u.AmountDue);
            }
        }
        public void ChangeOwedGetterShouldGetCorrectNumber(int paidOnes, double totalCost)
        {
            UpdateCashDrawer u = new UpdateCashDrawer(totalCost);

            u.PaidOnes = paidOnes;
            double changeOwed = Math.Round(paidOnes - totalCost, 2);

            if (changeOwed < 0)
            {
                Assert.Equal(0, u.ChangeOwed);
            }
            else
            {
                u.ChangeOwed = changeOwed;
                Assert.Equal(changeOwed, u.ChangeOwed);
            }
        }