diff --git a/exercise.main/BagelShop.cs b/exercise.main/BagelShop.cs new file mode 100644 index 00000000..2853f073 --- /dev/null +++ b/exercise.main/BagelShop.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public class BagelShop + { + public int _basketSize { get; set; } + + } +} diff --git a/exercise.main/Basket.cs b/exercise.main/Basket.cs new file mode 100644 index 00000000..8b85211b --- /dev/null +++ b/exercise.main/Basket.cs @@ -0,0 +1,217 @@ +using exercise.main.Products; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public class Basket + { + + private int _basketSize; + public List ProductList = new List(); + private Inventory _inventory; + + public Basket(int basketSize, Inventory inventory) + { + _inventory = inventory; + _basketSize = basketSize; + } + + public void Add(IProduct product) + { + if (!IsFull()) + { + ProductList.Add(product); + } + } + + public void Remove(int placeInList) + { + ProductList.RemoveAt(placeInList); + } + + public bool IsFull() + { + return ProductList.Count < _basketSize ? false : true; + } + + public int BasketSize { get { return _basketSize; } set { _basketSize = value; } } + + public bool ItemInBasket(string type) + { + return ProductList.Any(x => x.SKU_NAME == type); + } + + public float getBagelCost(string bagelSKU) + { + return _inventory.inventory[bagelSKU].Price; + } + + public float getTotalCostForBagels() + { + return ProductList.OfType().Sum(x => x.Price); + } + + public float getTotalCost() + { + return ProductList.Sum(x => x.getTotalPrice()); + } + + public float getTotalPriceForAllFillings() + { + return (float)Math.Round(ProductList.OfType().Sum(x => x.costForFillings()), 2); + } + + public float getFillingCost(string fillingSKU) + { + return _inventory.getFillingCost(fillingSKU); + } + + public bool inInventory(string item) + { + return _inventory.inInventory(item); + } + + public Dictionary getItemCount() + { + Dictionary itemCount = new Dictionary(); + itemCount = ProductList.GroupBy(x => x).ToDictionary(g => g.Key.SKU_NAME, g => g.Count()); + + return itemCount; + } + + public float caluculateDiscount() + { + Dictionary itemCount = getItemCount(); + float discountPrice = 0; + if (checkIfBundleDealAvaiable(itemCount)) + { + foreach (var item in itemCount) + { + if (item.Value >= 6 && _inventory.inventory[item.Key].Type == Type.Bagel) + { + discountPrice += getPriceForItemWithBundleDiscount(item.Key, item.Value); + } + else + { + discountPrice += item.Value * _inventory.inventory[item.Key].Price; + } + } + return discountPrice; + } + else if (checkIfCoffeeDealAvailable(itemCount)) + { + List coffeeList = TypeList(itemCount, Type.Coffee); + List bagelList = TypeList(itemCount, Type.Bagel); + int numberOfCoffee = coffeeList.Count; + int numberOfBagel = bagelList.Count; + + for (int i = 0; i < Math.Min(numberOfCoffee, numberOfBagel); i++) + { + itemCount[coffeeList[i]] -= 1; + itemCount[bagelList[i]] -= 1; + discountPrice += 1.25f; + } + foreach (var item in itemCount) + { + + discountPrice += item.Value * _inventory.inventory[item.Key].Price; + } + return discountPrice; + } + else + { + foreach (var item in itemCount) + { + + discountPrice += item.Value * _inventory.inventory[item.Key].Price; + } + return discountPrice; + } + } + + public List TypeList(Dictionary dict, Type type) + { + List typeList = new List(); + foreach (var item in dict) + { + if (_inventory.inventory[item.Key].Type == type) + { + for (int i = 0; i < item.Value; i++) + { + typeList.Add(item.Key); + } + } + } + return typeList; + } + + public bool checkIfBundleDealAvaiable(Dictionary dict) + { + foreach (var item in dict) + { + if (item.Value >= 6 && _inventory.inventory[item.Key].Type == Type.Bagel) + { + return true; + } + } + return false; + } + + public bool checkIfCoffeeDealAvailable(Dictionary dict) + { + return (dict.Any(x => _inventory.inventory[x.Key].Type == Type.Bagel) + && dict.Any(y => _inventory.inventory[y.Key].Type == Type.Coffee)); + } + + public float getPriceForItemWithBundleDiscount(string bagel, int amount) + { + int twelveBundle = 0; + int sixBundle = 0; + int singles = 0; + + if (amount >= 12) + { + twelveBundle = amount/12; + singles = amount%12; + if (singles > 6) + { + sixBundle = singles/6; + singles = singles%6; + } + } + else if (amount >= 6) + { + sixBundle = amount / 6; + singles = amount % 6; + + } + return twelveBundle * 3.99f + sixBundle * 2.49f + singles * _inventory.inventory[bagel].Price; + } + + + public string BuildReceipt() + { + StringBuilder receipt = new StringBuilder(); + DateTime dateTime = DateTime.Now; + Dictionary itemCount = getItemCount(); + + receipt.AppendLine("***** Bob's Bagels ******"); + receipt.AppendLine($" {dateTime.ToString()}"); + receipt.AppendLine("--------------------------"); + foreach (var item in itemCount) + { + receipt.AppendLine($"{item.Key,-15}{item.Value,-6}£{_inventory.inventory[item.Key].Price * item.Value}"); + } + receipt.AppendLine("--------------------------"); + receipt.AppendLine($"Total:{Math.Round(getTotalCost(),2),20}"); + return receipt.ToString(); + } + + } +} diff --git a/exercise.main/Enums.cs b/exercise.main/Enums.cs new file mode 100644 index 00000000..67a5cb9b --- /dev/null +++ b/exercise.main/Enums.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public enum Type + { + Bagel, + Coffee, + Filling + } +} diff --git a/exercise.main/IProduct.cs b/exercise.main/IProduct.cs new file mode 100644 index 00000000..d6cea8e8 --- /dev/null +++ b/exercise.main/IProduct.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public interface IProduct + { + string SKU_NAME { get; set; } + + float Price { get; set; } + + Type type { get; } + + float getTotalPrice(); + } +} diff --git a/exercise.main/InvItem.cs b/exercise.main/InvItem.cs new file mode 100644 index 00000000..e1452378 --- /dev/null +++ b/exercise.main/InvItem.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public class InvItem + { + private int _id; + private float _price; + private Type _type; + + public InvItem(int setId, float setPrice, Type type) + { + _price = setPrice; + _id = setId; + _type = type; + } + + public int ID { get { return _id; } } + public float Price { get { return _price; } } + public Type Type { get { return _type; } } + + + + } +} diff --git a/exercise.main/Inventory.cs b/exercise.main/Inventory.cs new file mode 100644 index 00000000..b2144df5 --- /dev/null +++ b/exercise.main/Inventory.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main +{ + public class Inventory + { + public Dictionary inventory = new Dictionary(); + + + public Inventory() + { + inventory.Add("BGLO", new InvItem(0, 0.49f, Type.Bagel)); + inventory.Add("BGLP", new InvItem(1, 0.39f, Type.Bagel)); + inventory.Add("BGLE", new InvItem(2, 0.49f, Type.Bagel)); + inventory.Add("BGLS", new InvItem(3, 0.49f, Type.Bagel)); + inventory.Add("FILB", new InvItem(4, 0.12f, Type.Filling)); + inventory.Add("FILE", new InvItem(5, 0.12f, Type.Filling)); + inventory.Add("FILC", new InvItem(6, 0.12f, Type.Filling)); + inventory.Add("FILX", new InvItem(7, 0.12f, Type.Filling)); + inventory.Add("FILS", new InvItem(8, 0.12f, Type.Filling)); + inventory.Add("FILH", new InvItem(9, 0.12f, Type.Filling)); + inventory.Add("COFB", new InvItem(10, 0.99f, Type.Coffee)); + inventory.Add("COFW", new InvItem(11, 1.19f, Type.Coffee)); + inventory.Add("COFC", new InvItem(12, 1.29f, Type.Coffee)); + inventory.Add("COFL", new InvItem(13, 1.29f, Type.Coffee)); + + } + + public float getFillingCost(string fillingSKU ) + { + return inventory[fillingSKU].Price; + } + + public bool inInventory(string SKU) + { + return inventory.ContainsKey(SKU); + } + } +} diff --git a/exercise.main/Products/Bagel.cs b/exercise.main/Products/Bagel.cs new file mode 100644 index 00000000..abe799a0 --- /dev/null +++ b/exercise.main/Products/Bagel.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Metadata.Ecma335; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main.Products +{ + + public class Bagel : IProduct + { + private string _NAME; + private List fillings; + private float _cost; + private Type _type; + + public Bagel(string name, Inventory inventory) + { + _NAME = name; + fillings = new List(); + _cost = inventory.inventory[name].Price; + _type = inventory.inventory[name].Type; + } + public string SKU_NAME { get { return _NAME; } set { _NAME = value; } } + public float Price { get { return _cost; } set { _cost = value; } } + public List Fillings { get { return fillings; } } + + public Type type { get { return _type; } } + + public void addFilling(Filling filling) + { + fillings.Add(filling); + } + public float costForFillings() + { + return fillings.Sum(x => x.Price); + } + public float getTotalPrice() + { + return costForFillings() + _cost; + } + } +} diff --git a/exercise.main/Products/Coffee.cs b/exercise.main/Products/Coffee.cs new file mode 100644 index 00000000..977c7243 --- /dev/null +++ b/exercise.main/Products/Coffee.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main.Products +{ + public class Coffee : IProduct + { + private string _name; + private float _price; + private Type _type; + + public Coffee(string name, Inventory inventory) + { + _name = name; + _price = inventory.inventory[name].Price; + _type = inventory.inventory[name].Type; + } + public string SKU_NAME { get { return _name; } set => throw new NotImplementedException(); } + public float Price { get { return _price; } set { _price = value; } } + + public Type type { get { return _type; } } + + public float getTotalPrice() + { + return _price; + } + } +} diff --git a/exercise.main/Products/Filling.cs b/exercise.main/Products/Filling.cs new file mode 100644 index 00000000..80e15b1f --- /dev/null +++ b/exercise.main/Products/Filling.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.main.Products +{ + public class Filling : IProduct + { + private string _name; + private float _cost; + private Type _type; + + public Filling(string name, Inventory inventory) + { + _name = name; + _cost = inventory.inventory[name].Price; + _type = inventory.inventory[name].Type; + } + public string SKU_NAME { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + public float Price { get { return _cost; } set => new NotImplementedException(); } + + public Type type { get { return _type; } } + + public float getTotalPrice() + { + return _cost; + } + } +} diff --git a/exercise.main/Program.cs b/exercise.main/Program.cs index 3751555c..2714f859 100644 --- a/exercise.main/Program.cs +++ b/exercise.main/Program.cs @@ -1,2 +1,22 @@ -// See https://aka.ms/new-console-template for more information -Console.WriteLine("Hello, World!"); +using exercise.main; +using exercise.main.Products; + + +Inventory inventory = new Inventory(); +Basket basket = new Basket(30, inventory); +Bagel bagel = new Bagel("BGLP", inventory); +Bagel bagel2 = new Bagel("BGLE", inventory); +Coffee coffee = new Coffee("COFB", inventory); +for (int i = 0; i < 4; i++) +{ + basket.Add(bagel); +} +for (int i = 0; i < 2; i++) +{ + basket.Add(coffee); +} +for (int i = 0; i < 7; i++) +{ + basket.Add(bagel2); +} +Console.WriteLine(basket.BuildReceipt()); \ No newline at end of file diff --git a/exercise.main/domainModel.md b/exercise.main/domainModel.md new file mode 100644 index 00000000..a16114ed --- /dev/null +++ b/exercise.main/domainModel.md @@ -0,0 +1,39 @@ +|Classes| Methods/Properties|Scenario|Output| +|-------|-------------------|---------|------| +|Basket.cs|Add(IProduct)|Want to add a specific bagel to basket|Adds the bagel to the basket| +|Basket.cs|Remove(int placeinlist)| id like the ability to remove a bagel from basket| removes the given bagel from basket| +|Basket.cs|IsFull()| want feedback if basket is full| returnes true if full, false otherwise| +|Basket.cs|BasketSize| want the ability to change basket size| basket size changed to wanted size| +|Basket.cs|ItemInBaskett(string type)| want to see if item is in basket so i only remove items present in basket| returns true if item in basket, false otherwise| +|Basket.cs|GetBagelCost(string bagelSKU)| want to see the cost of a bagel| returns the price of given bagel| +|Basket.cs|GetTotalCost()| want to see total cost| returns the total cost of the basket| +|Bagel.cs|AddFilling(IProduct filling)| want to add filling| wanted filling added| +|Inventory.cs|getFillingCost(string fillingSKU)| want to see price of fillings| returns list of fillings with price| +|Inventory.cs|inInventory(string item)|only want to sell items in inventory|returns true if item in inventory, false otherwise| +|Basket.cs|CalculateDiscount()|so if items in basket are discountable, give the discount| Total price deiscounted| +|basket.cs|checkIfBundleDealAvailable()|so i can get discounted price when buying in bulk| returns true if bulk criteria is met| +|basket.cs|checkOfCoffeeDealAvailable()|so i can get dicounted price when buying both a bagel and a coffee|returns true if coffeedeal available| +|basket.cs|BuildReceipt()|so i can recieve a receipt|builds and return a reciept of the purchased items| + + + + +1. +As a regular customer +So I can justify the spendings for this shop, +I'd like to have some sort of coffee bagel deal. + +2. +As a parent, +So i can by bagel to the whole family +I would like to be able to buy bundles of bagels for a discounted price. + +3. +As a member of the public, +So I can check my order, +I would like to be able to recieve a receipt of my purchase + +4. +As an organised person, +So I can organise my reciept, +I would like a timestamp on the reciept diff --git a/exercise.tests/CoreTest.cs b/exercise.tests/CoreTest.cs new file mode 100644 index 00000000..561aa5a8 --- /dev/null +++ b/exercise.tests/CoreTest.cs @@ -0,0 +1,340 @@ +using exercise.main; +using exercise.main.Products; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace exercise.tests +{ + [TestFixture] + public class CoreTest + { + [Test] + public void TestAdd() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + basket.Add(bagel); + + Assert.That(basket.ProductList.Count == 1); + } + + [Test] + public void TestRemove() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + basket.Add(bagel); + + basket.Remove(0); + + Assert.That(basket.ProductList.Count == 0); + } + + [Test] + public void TestIsFull() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLO", inventory); + Bagel bagel3 = new Bagel("BGLO", inventory); + + basket.Add(bagel); + Assert.IsFalse(basket.IsFull()); + basket.Add(bagel2); + basket.Add(bagel3); + Assert.IsTrue(basket.IsFull()); + + } + + [Test] + public void TestBasketSize() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Assert.That(basket.BasketSize == 3); + basket.BasketSize = 6; + Assert.That(basket.BasketSize == 6); + } + + [Test] + public void TestItemInBasket() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + basket.Add(bagel); + + Assert.IsTrue(basket.ItemInBasket("BGLO")); + } + + [Test] + public void TestGetBagelCost() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + //Bagel bagel = new Bagel("BGLO", inventory); + + Assert.That(basket.getBagelCost("BGLO") == 0.49f); + } + + [Test] + public void TestGetTotal() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + + basket.Add(bagel); + basket.Add(bagel2); + + Assert.That(basket.getTotalCost() == 0.98f); + } + + [Test] + public void TestGetTotalWithAddedFillings() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + + basket.Add(bagel); + bagel.addFilling(new Filling("FILE", inventory)); + basket.Add(bagel2); + + Assert.That(basket.getTotalCost() == 1.10f); + } + + [Test] + public void TestAddFilling() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + bagel.addFilling(new Filling("FILE", inventory)); + bagel.addFilling(new Filling("FILB", inventory)); + Assert.That(bagel.Fillings.Count == 2); + } + + [Test] + public void TestGetCostOfFilling() + { + Inventory inventory = new Inventory(); + + Assert.That(inventory.getFillingCost("FILE") == 0.12f); + } + + [Test] + public void TestInInventory() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + + Assert.IsTrue(inventory.inInventory("BGLO")); + Assert.IsFalse(inventory.inInventory("egg")); + } + + [Test] + public void TestcostForFillings() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + + Bagel bagel = new Bagel("BGLO", inventory); + + bagel.addFilling(new Filling("FILE", inventory)); + bagel.addFilling(new Filling("FILE", inventory)); + + Assert.That(bagel.costForFillings() == 0.24f); + + + } + + + [Test] + public void TestGetItemCount() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(15, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + basket.Add(bagel); + basket.Add(bagel); + for (int i = 0; i < 10; i++) + { + basket.Add(bagel2); + } + + Dictionary itemCount = basket.getItemCount(); + + Assert.That(itemCount["BGLO"] == 2); + Assert.That(itemCount["BGLE"] == 10); + } + + [Test] + public void TestGetTotalPriceForAllFillings() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(3, inventory); + + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + Bagel bagel3 = new Bagel("BGLO", inventory); + + bagel.addFilling(new Filling("FILE", inventory)); + bagel.addFilling(new Filling("FILE", inventory)); + bagel2.addFilling(new Filling("FILB", inventory)); + + basket.Add(bagel); + basket.Add(bagel2); + basket.Add(bagel3); + + + Assert.That(basket.getTotalPriceForAllFillings() == 0.36f); + } + + [Test] + public void TestCheckIfBundleDealAvailable() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(15, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + basket.Add(bagel); + basket.Add(bagel); + for (int i = 0; i < 10; i++) + { + basket.Add(bagel2); + } + + Dictionary itemCount = basket.getItemCount(); + + Assert.IsTrue(basket.checkIfBundleDealAvaiable(itemCount)); + Assert.IsFalse(basket.checkIfCoffeeDealAvailable(itemCount)); + } + + [Test] + public void TestCheckIfCoffeeDealAvailable() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(15, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + basket.Add(bagel); + basket.Add(bagel); + basket.Add(new Coffee("COFB", inventory)); + + Dictionary itemCount = basket.getItemCount(); + + Assert.IsFalse(basket.checkIfBundleDealAvaiable(itemCount)); + Assert.IsTrue(basket.checkIfCoffeeDealAvailable(itemCount)); + } + + [Test] + public void TestCalculateDiscount() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(120, inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + for (int i = 0; i < 20; i++) + { + basket.Add(bagel2); + } + + + Assert.That(basket.caluculateDiscount() == 7.46f); + + + } + + [Test] + public void TestGetToalCostOfBagels() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(15, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLE", inventory); + bagel.addFilling(new Filling("FILE", inventory)); + bagel.addFilling(new Filling("FILE", inventory)); + bagel2.addFilling(new Filling("FILE", inventory)); + basket.Add(bagel); + basket.Add(bagel); + basket.Add(new Coffee("COFB", inventory)); + for (int i = 0; i < 3; i++) + { + basket.Add(bagel2); + } + + Assert.That(basket.getTotalCostForBagels() == 2.45f); + + } + + [Test] + public void TestDiscounts1() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(30, inventory); + Bagel bagel = new Bagel("BGLO", inventory); + Bagel bagel2 = new Bagel("BGLP", inventory); + Bagel bagel3 = new Bagel("BGLE", inventory); + Coffee coffee = new Coffee("COFB", inventory); + basket.Add(bagel); + basket.Add(bagel); + for (int i = 0; i < 12; i++) + { + basket.Add(bagel2); + } + for (int i = 0; i < 6; i++) + { + basket.Add(bagel3); + } + for (int i = 0; i < 3; i++) + { + basket.Add(coffee); + } + + Assert.That(basket.caluculateDiscount() == 10.43f); + } + [Test] + public void TestDiscounts2() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(30, inventory); + Bagel bagel = new Bagel("BGLP", inventory); + for (int i = 0; i < 16; i++) + { + basket.Add(bagel); + } + + + Assert.That(basket.caluculateDiscount() == 5.55f); + } + + [Test] + public void TestDiscounts3() + { + Inventory inventory = new Inventory(); + Basket basket = new Basket(30, inventory); + Bagel bagel = new Bagel("BGLP", inventory); + Coffee coffee = new Coffee("COFB", inventory); + for (int i = 0; i < 4; i++) + { + basket.Add(bagel); + } + for (int i = 0; i < 2; i++) + { + basket.Add(coffee); + } + + Assert.That(basket.caluculateDiscount() == 3.28f); + + } + } +} diff --git a/exercise.tests/exercise.tests.csproj b/exercise.tests/exercise.tests.csproj index 9fed8e17..42492291 100644 --- a/exercise.tests/exercise.tests.csproj +++ b/exercise.tests/exercise.tests.csproj @@ -1,4 +1,4 @@ - + net9.0 @@ -17,4 +17,8 @@ + + + +