Advertisement
apieceoffruit

ProductsTests

Apr 22nd, 2021
717
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.79 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using FluentAssertions;
  5. using NUnit.Framework;
  6. using Shopping;
  7.  
  8. namespace ShoppingTests
  9. {
  10.     [TestFixture]
  11.     public class Products_Should
  12.     {
  13.         [SetUp]
  14.         public void Setup() => _products = new Products<string>();
  15.  
  16.         [Test]
  17.         public void Start_Empty() => _products.Count.Should().Be(0);
  18.  
  19.         [Test]
  20.         public void When_Adding_Product_Increases_Count()
  21.         {
  22.             _products.Add("Apple",15);
  23.             _products.Count.Should().Be(1);
  24.         }
  25.        
  26.         [Test]
  27.         public void When_Initialize_Use_Object_Initializer()
  28.         {
  29.             var products = new Products<string>
  30.             {
  31.                 {"Duck",12},
  32.                 {"Apple",5},
  33.                 {"Sword",25},
  34.                 {"McGuffin",999}
  35.             };
  36.  
  37.             products.Count.Should().Be(4);
  38.             products.GetPrice("McGuffin").Should().Be(999);
  39.         }
  40.        
  41.         [Test]
  42.         public void When_HasProduct_Returns_True()
  43.         {
  44.             _products.Add("Apple",15);
  45.             _products.Has("Apple").Should().BeTrue();
  46.         }
  47.  
  48.         [Test]
  49.         public void When_GetPrice_Returns_Price()
  50.         {
  51.             _products.Add("Apple", 15);
  52.            
  53.             _products.GetPrice("Apple").Should().Be(15);
  54.         }
  55.  
  56.         [Test]
  57.         public void When_GetAffordable_Returns_Affordable_Products()
  58.         {
  59.             _products.Add("Turkey",19);
  60.             _products.Add("Salmon", 15);
  61.             _products.Add("Dog",25);
  62.  
  63.             var affordable = _products.GetAffordable(20);
  64.            
  65.             ContainsItems(affordable,"Salmon","Turkey");
  66.         }
  67.        
  68.         [Test]
  69.         public void When_GetTooExpensive_Returns_Unaffordable_Products()
  70.         {
  71.             _products.Add("Turkey",19);
  72.             _products.Add("Salmon", 15);
  73.             _products.Add("Dog",25);
  74.  
  75.             var affordable = _products.GetTooExpensive(20);
  76.            
  77.             ContainsItems(affordable,"Dog");
  78.         }
  79.  
  80.  
  81.         [Test]
  82.         public void When_Foreach_Can_Iterate_Products()
  83.         {
  84.             _products.Add("Turkey",19);
  85.             _products.Add("Salmon", 15);
  86.             _products.Add("Dog",25);
  87.            
  88.             List<int> prices = new List<int>();
  89.             foreach (var product in _products)
  90.                 prices.Add(product.Price);
  91.  
  92.             prices.Count.Should().Be(3);
  93.             prices.Should().BeEquivalentTo(new List<int> {19, 15, 25});
  94.         }
  95.  
  96.         [Test]
  97.         public void When_CanAfford_Return_True_If_Has_Enough_Money()
  98.         {
  99.             _products.Add("Shield",100);
  100.             _products.CanAfford("Shield", 200).Should().BeTrue();
  101.         }
  102.  
  103.         [Test]
  104.         public void When_Generic_Enumerating_ReturnsProducts()
  105.         {
  106.            _products.Add(DefaultProducts);
  107.            
  108.             var _enumerator = ((IEnumerable)_products).GetEnumerator();
  109.  
  110.             int count = 0;
  111.             while (_enumerator.MoveNext()) count++;
  112.             count.Should().Be(4);
  113.         }
  114.  
  115.         IEnumerable<Products<string>.Product> DefaultProducts => new List<Products<string>.Product>
  116.         {
  117.             CreateProduct("Duck", 12),
  118.             CreateProduct("Apple", 5),
  119.             CreateProduct("Sword", 25),
  120.             CreateProduct( "McGuffin",999)
  121.         };
  122.  
  123.         Products<string>.Product CreateProduct(string name, int price) =>
  124.             new Products<string>.Product {Item = name, Price = price};
  125.        
  126.         Products<string> _products;
  127.  
  128.         void ContainsItems(IEnumerable<Products<string>.Product> results, params string[] items) =>
  129.             results.Select(x=>x.Item).Should().BeEquivalentTo(items);
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement