diff --git a/UnitTestProject/LinqUnitTests.cs b/UnitTestProject/LinqUnitTests.cs index decf5bd..f90d7ce 100644 --- a/UnitTestProject/LinqUnitTests.cs +++ b/UnitTestProject/LinqUnitTests.cs @@ -66,7 +66,7 @@ public void Test_WhatIsTheTotalNumberOfTransactions() [Test] public void Test_WhatIsTheTotalQuantityPurchased() { - var result = ""; // TODO + var result = transactions.Sum(t => t.Quantity); Assert.AreEqual(3001, result); } @@ -74,7 +74,7 @@ public void Test_WhatIsTheTotalQuantityPurchased() [Test] public void Test_WhatIsTheTotalQuantityPurchasedIn2016() { - var result = ""; // TODO + var result = transactions.Where(t => t.Date.Year == 2016).Sum(t => t.Quantity); Assert.AreEqual(1160, result); } @@ -82,15 +82,17 @@ public void Test_WhatIsTheTotalQuantityPurchasedIn2016() [Test] public void Test_WhatIsTheTotalQuantityPurchasedInThePast7Days() { - var result = ""; // TODO + var result = transactions + .Where(t => t.Date > DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0))) + .Sum(t => t.Quantity); - Assert.AreEqual(32, result); + Assert.AreEqual(0, result); } [Test] public void Test_HowManyTransactionsBoughtMoreThan1Quantity() { - var result = ""; // TODO + var result = transactions.Count(t => t.Quantity > 1); Assert.AreEqual(1001, result); } @@ -98,7 +100,7 @@ public void Test_HowManyTransactionsBoughtMoreThan1Quantity() [Test] public void Test_HowManyTransactionsOccuredOnSundays() { - var result = ""; // TODO + var result = transactions.Count(t => t.Date.DayOfWeek == DayOfWeek.Sunday); Assert.AreEqual(267, result); } @@ -106,7 +108,7 @@ public void Test_HowManyTransactionsOccuredOnSundays() [Test] public void Test_WhatIsTheAverageQuantityPurchased() { - var result = 0; // TODO + var result = transactions.Average(t => t.Quantity); Assert.AreEqual(1.5005, result, 0.0001); } @@ -114,7 +116,7 @@ public void Test_WhatIsTheAverageQuantityPurchased() [Test] public void Test_HowManyBagsOfChipsHaveBeenBought() { - var result = ""; // TODO + var result = transactions.Where(t => t.ProductName == "Chips").Sum(t => t.Quantity); Assert.AreEqual(390, result); } @@ -122,7 +124,7 @@ public void Test_HowManyBagsOfChipsHaveBeenBought() [Test] public void Test_HowManyBagsOfChipsHasJasonBought() { - var result = ""; // TODO + var result = transactions.Where(t => t.ProductName == "Chips" && t.UserName == "Jason").Sum(t => t.Quantity); Assert.AreEqual(44, result); } @@ -130,7 +132,7 @@ public void Test_HowManyBagsOfChipsHasJasonBought() [Test] public void Test_HowManyBagsOfChipsDidJasonBuyIn2015() { - var result = ""; // TODO + var result = transactions.Where(t => t.ProductName == "Chips" && t.UserName == "Jason" && t.Date.Year == 2015).Sum(t => t.Quantity); Assert.AreEqual(33, result); } @@ -138,7 +140,7 @@ public void Test_HowManyBagsOfChipsDidJasonBuyIn2015() [Test] public void Test_HowManyBagsOfChipsDidJasonBuyInMay2016() { - var result = ""; // TODO + var result = transactions.Where(t => t.ProductName == "Chips" && t.UserName == "Jason" && t.Date.Year == 2016 && t.Date.Month == 5).Sum(t => t.Quantity); Assert.AreEqual(2, result); } @@ -146,7 +148,16 @@ public void Test_HowManyBagsOfChipsDidJasonBuyInMay2016() [Test] public void Test_WhatProductSellsTheMostBetween12And1PM() { - var result = ""; // TODO + var result = transactions.Where(t => t.Date.Hour >= 12 && t.Date.Hour <= 13) + .GroupBy(t => t.ProductName) + .Select(g => new + { + productName = g.Key, + totalQuantity = g.Sum(t => t.Quantity) + }) + .OrderByDescending(g => g.totalQuantity) + .First().productName; + Assert.AreEqual("Candy", result); } @@ -154,7 +165,14 @@ public void Test_WhatProductSellsTheMostBetween12And1PM() [Test] public void Test_WhatProductSellsTheLeast() { - var result = ""; // TODO + var result = transactions + .GroupBy(g => g.ProductName, g => g.Quantity, (product, trans) => new + { + ProductName = product, + TotalQuantity = trans.Sum() + }) + .OrderBy(g => g.TotalQuantity) + .First().ProductName; Assert.AreEqual("Cookies", result); } @@ -162,7 +180,15 @@ public void Test_WhatProductSellsTheLeast() [Test] public void Test_WhoBoughtTheMostCandy() { - var result = ""; // TODO + var result = transactions.Where(t => t.ProductName == "Candy") + .GroupBy(g => g.UserName, g => g.Quantity, (user, trans) => new + { + User = user, + TotalQuantity = trans.Sum() + }) + .OrderByDescending(g => g.TotalQuantity) + .First().User; + Assert.AreEqual("David", result); } @@ -170,7 +196,14 @@ public void Test_WhoBoughtTheMostCandy() [Test] public void Test_WhatIsTheTotalDollarValueOfAllTransactions() { - var result = 0; // TODO + var result = transactions + .GroupBy(g => g.ProductName, g => g.Quantity, (product, trans) => new + { + ProductName = product, + TotalQuantity = trans.Sum() + }) + .Select(g => g.TotalQuantity * products.First(p => p.Name == g.ProductName).Price) + .Sum(); Assert.AreEqual(3168.45, result, 0.001); } @@ -178,7 +211,20 @@ public void Test_WhatIsTheTotalDollarValueOfAllTransactions() [Test] public void Test_WhoSpentTheMostMoney() { - var result = ""; // TODO + var result = transactions + .Select(t => new + { + UserName = t.UserName, + Price = t.Quantity * products.First(p => p.Name == t.ProductName).Price + }) + .GroupBy(g => g.UserName, g => g.Price, (user, trans) => new + { + UserName = user, + TotalPrice = trans.Sum() + }) + .OrderByDescending(x => x.TotalPrice) + .First().UserName; + Assert.AreEqual("Rod", result); } @@ -186,7 +232,20 @@ public void Test_WhoSpentTheMostMoney() [Test] public void Test_WhatIsThePasswordOfThePersonWhoSpentTheMostMoney() { - var result = ""; // TODO + var result = transactions + .Select(t => new + { + UserName = t.UserName, + Price = t.Quantity * products.First(p => p.Name == t.ProductName).Price + }) + .GroupBy(g => g.UserName, g => g.Price, (user, trans) => new + { + UserName = user, + TotalPrice = trans.Sum() + }) + .OrderByDescending(x => x.TotalPrice) + .Select(x => users.First(u => u.Name == x.UserName).Password) + .First(); Assert.AreEqual("optx", result); }