public void DisplayReceipe() { // Arrange var items = new List <Item> { new Item { Id = 1, Label = "Phone", Price = 249 }, new Item { Id = 2, Label = "Computer", Price = 999 }, new Item { Id = 3, Label = "TV", Price = 799 } }; var clients = new List <Client> { new Client { Id = 1, Name = "Bob" }, new Client { Id = 2, Name = "Leïa" } }; var purchases = new List <Purchase> { new Purchase { ItemId = 1, ClientId = 1, Quantity = 2 }, new Purchase { ItemId = 2, ClientId = 1, Quantity = 1 }, new Purchase { ItemId = 1, ClientId = 2, Quantity = 1 }, new Purchase { ItemId = 2, ClientId = 2, Quantity = 2 }, new Purchase { ItemId = 3, ClientId = 2, Quantity = 3 }, }; var expected = new List <Tuple <string, string, int, double> > { new Tuple <string, string, int, double>("Bob", "Phone", 2, 249), new Tuple <string, string, int, double>("Bob", "Computer", 1, 999), new Tuple <string, string, int, double>("Leïa", "Phone", 1, 249), new Tuple <string, string, int, double>("Leïa", "Computer", 2, 999), new Tuple <string, string, int, double>("Leïa", "TV", 3, 799) }; // Act var subject = new Linq(); var finalReceipe = subject.GetFinalReceipe(items, clients, purchases).ToList(); // Assert Assert.AreEqual(expected.Count, finalReceipe.Count); foreach (var actualReceipeLine in finalReceipe) { Assert.IsTrue(expected.Exists(x => x.Item1 == actualReceipeLine.Item1 && x.Item2 == actualReceipeLine.Item2 && x.Item3 == actualReceipeLine.Item3 && x.Item4 == actualReceipeLine.Item4)); } }