public void VendingMachine_InValidCoinInserted_DisplaysInsertCoin() { var fixture = new Fixture() .Customize(new AutoMoqCustomization()); var checker = fixture.Freeze <Mock <ICoinChecker> >(); var repository = fixture.Freeze <Mock <ICoinRepository> >(); checker.Setup(x => x.CheckCoin(It.IsAny <InsertedCoin>())).Returns(ValidCoin.Unknown); repository.Setup(x => x.GetAllCoinBins()) .Returns(ValidCoin.List().Select(coin => new CoinBin() { Amount = 25, CoinType = coin })); var sut = fixture.Create <VendingMachine>(); var insertedCoin = new InsertedCoin() { Diameter = 100f, Weight = 100f }; sut.InsertCoin(insertedCoin); Assert.Equal("Insert Coin", sut.CoinDisplay); }
public void VendingMachine_ValidCoinInserted_DisplaysValueOfCoin() { var fixture = new Fixture() .Customize(new AutoMoqCustomization()); var checker = fixture.Freeze <Mock <ICoinChecker> >(); var repository = fixture.Freeze <Mock <ICoinRepository> >(); checker.Setup(x => x.CheckCoin(It.IsAny <InsertedCoin>())).Returns(ValidCoin.Nickel); repository.Setup(x => x.GetAllCoinBins()) .Returns(ValidCoin.List().Select(coin => new CoinBin() { Amount = 25, CoinType = coin })); var sut = fixture.Create <VendingMachine>(); var insertedCoin = new InsertedCoin() { Diameter = ValidCoin.Nickel.Diameter, Weight = ValidCoin.Nickel.Weight }; var result = sut.InsertCoin(insertedCoin); Assert.Equal($"{result.Value:C}", sut.CoinDisplay); }
private static void TestValidCoinCreation(string description, decimal expectedValue) { ValidCoin validCoin; var success = ValidCoin.TryCreate(description, out validCoin); Assert.That(success, Is.EqualTo(true)); Assert.That(validCoin.Value, Is.EqualTo(expectedValue)); }
private static void TestCoinCreationWithInvalidDescription(string description) { ValidCoin validCoin; var success = ValidCoin.TryCreate(description, out validCoin); Assert.That(success, Is.EqualTo(false)); Assert.That(validCoin, Is.EqualTo(null)); }
public void StaticCoinRepository_GetAllCoinBins_ReturnsListOfCoins() { var fixture = new Fixture() .Customize(new AutoMoqCustomization()); var sut = fixture.Create <StaticCoinRepository>(); var results = sut.GetAllCoinBins(); Assert.Equal(ValidCoin.List().Count(x => x != ValidCoin.Unknown), results.Count()); }
private void InsertCoin(int coinIndex) { var coinList = ValidCoin.List().ToList(); if (coinIndex >= coinList.Count) { return; } var insertedCoin = new InsertedCoin() { Diameter = coinList[coinIndex].Diameter, Weight = coinList[coinIndex].Weight }; this.machine.InsertCoin(insertedCoin); }
private void WriteInsertCoinMenu() { Console.WriteLine("What Coin would you like to insert?"); Console.WriteLine(""); var index = 1; foreach (var coin in ValidCoin.List()) { Console.WriteLine(coin == ValidCoin.Unknown ? $"{index}. Some weird object you found in your pocket" : $"{index}. {coin.Name}"); index++; } Console.WriteLine(""); Console.WriteLine("R. Return"); Console.WriteLine("Q. Quit"); }
public void VendingMachine_VendProductInsufficientFunds_CoinBinUnchanged() { var fixture = new Fixture() .Customize(new AutoMoqCustomization()); var checker = fixture.Freeze <Mock <ICoinChecker> >(); var coinRepository = fixture.Freeze <Mock <ICoinRepository> >(); var productRepository = fixture.Freeze <Mock <IProductRepository> >(); var insertedCoin = fixture.Create <InsertedCoin>(); checker.Setup(x => x.CheckCoin(It.IsAny <InsertedCoin>())).Returns(ValidCoin.Dollar); coinRepository.Setup(x => x.GetAllCoinBins()) .Returns(ValidCoin.List().Select(coin => new CoinBin() { Amount = 25, CoinType = coin })); productRepository.Setup(x => x.GetAllProducts()) .Returns(new List <ProductBin>() { new ProductBin() { ProductType = new Product() { Name = "Doritos" }, Cost = 2.00m, Amount = 1 }, }); var sut = fixture.Create <VendingMachine>(); sut.InsertCoin(insertedCoin); var vendStatus = sut.Vend("Doritos"); Assert.Equal(VendStatus.InsufficientFunds, vendStatus); Assert.Equal($"{ValidCoin.Dollar.Value:C}", sut.CoinDisplay); }
public IEnumerable <CoinBin> GetAllCoinBins() => ValidCoin.List().Select(coin => new CoinBin() { Amount = 25, CoinType = coin });