public void TestTestScanProduct_WithoutPointOfSale() { var terminal = new Terminal(); var codes = "ABCABA"; var codeList = codes.ToCharArray().ToList(); Assert.Throws <NullProductException>(() => { foreach (var code in codeList) { terminal.ScanProduct(code.ToString()); } }); }
public void TestScanProduct_UnitPrice_SingleScanning(string productCode) { Assert.DoesNotThrow(() => { _terminal.ScanProduct(productCode); }); var product = _pointOfSale.Products.FirstOrDefault(item => item.Equals(productCode)); Assert.IsNotNull(product); Assert.IsNotNull(_terminal.Bill); Assert.IsNotEmpty(_terminal.Bill.ShoppingList); Assert.AreEqual(_terminal.CalculateTotal(), product.Price.UnitPrice); }
static void Main(string[] args) { Console.WriteLine("### Point Of Sale Terminal Service UP ###"); var terminal = new PointOfSaleTerminal(); // Set default pricing for Products Utils.SetDefaultPricing(terminal); // Order 1 terminal.ScanProduct("A"); terminal.ScanProduct("B"); terminal.ScanProduct("C"); terminal.ScanProduct("D"); terminal.ScanProduct("A"); terminal.ScanProduct("B"); terminal.ScanProduct("A"); Console.WriteLine($"Amount of Order 'ABCDABA': ${terminal.CalculateTotal()}"); //Prepare for next order terminal.ClearForNewOrder(); // Order 2 terminal.ScanProduct("C"); terminal.ScanProduct("C"); terminal.ScanProduct("C"); terminal.ScanProduct("C"); terminal.ScanProduct("C"); terminal.ScanProduct("C"); terminal.ScanProduct("C"); Console.WriteLine($"Amount of Order 'CCCCCCC': ${terminal.CalculateTotal()}"); //Prepare for next order terminal.ClearForNewOrder(); // Order 3 terminal.ScanProduct("A"); terminal.ScanProduct("B"); terminal.ScanProduct("C"); terminal.ScanProduct("D"); Console.WriteLine($"Amount of Order 'ABCD': ${terminal.CalculateTotal()}"); }