public void Holds_Reservation_PurchaseFromHold_And_Purchase_Test(RealTimeInventory inventory, int toUpdate)
 {
     using (var testHelper = CreateInventoryServiceServer(inventory))
     {
         const int looplength       = 5;
         var       operations       = InventoryServiceSpecificationHelper.GetOperations(testHelper);
         var       assertions       = InventoryServiceSpecificationHelper.GetAssertions();
         var       updatedInventory = inventory;
         for (var i = 0; i < looplength; i++)
         {
             var selection = new Random().Next(1, operations.Count);
             var updatedInventoryMessage = operations[selection](updatedInventory, toUpdate).WaitAndGetOperationResult();
             assertions[selection](updatedInventory, toUpdate, updatedInventoryMessage);
             updatedInventory = updatedInventoryMessage.RealTimeInventory as RealTimeInventory;
         }
     }
 }
        public void Basic_Test()
        {
            var produltId = "sample" + Guid.NewGuid().ToString().Replace("-", "");

            foreach (var request in new List <Tuple <RealTimeInventory, int> >()
            {
                new Tuple <RealTimeInventory, int>(new RealTimeInventory(produltId, 10, 0, 0), 2)
                //  new Tuple<RealTimeInventory, int>(new RealTimeInventory(produltId, -8,8,11),-42),
                //new Tuple<RealTimeInventory, int>(new RealTimeInventory(produltId, -3,2,2),-17)
            })
            {
                Enumerable.Range(1, 6).ForEach(oo =>
                {
                    using (var testHelper = CreateInventoryServiceServer(request.Item1))
                    {
                        //var  response = testHelper.ReserveAsync(request.Item1, request.Item2).WaitAndGetOperationResult();
                        //  response = testHelper.ReserveAsync(request.Item1, request.Item2).WaitAndGetOperationResult();
                        var operation = InventoryServiceSpecificationHelper.GetOperations(testHelper)[oo];
                        InventoryServiceSpecificationHelper.GetAssertions()[oo](request.Item1, request.Item2, operation(request.Item1, request.Item2).WaitAndGetOperationResult());
                    }
                });
            }
        }