public void ExecutionBlocks ()
		{
			using (var bo = NSBlockOperation.Create (Create_Null)) {
				bo.AddExecutionBlock (Add_Null);
				Assert.That (bo.ExecutionBlocks.Length, Is.EqualTo (2), "ExecutionBlocks");
			}
		}
		public void Add_Null ()
		{
			using (var bo = NSBlockOperation.Create (Create_Null)) {
				// Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: *** -[NSBlockOperation addExecutionBlock:]: block is nil
				Assert.Throws<ArgumentNullException> (() => bo.AddExecutionBlock (null));
			}
		}
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = "Shipping Rates";

            // Setup both operations to run
            var shopOperation = new GetShopOperation(client);

            shopOperation.DidReceiveShop += (op, shop) => {
                currencyFormatter              = new NSNumberFormatter();
                currencyFormatter.NumberStyle  = NSNumberFormatterStyle.Currency;
                currencyFormatter.CurrencyCode = shop.Currency;
            };
            shopOperation.FailedToReceiveShop += (op, error) => {
                Console.WriteLine("Failed to retrieve shop: {0}", error);
            };
            NSOperationQueue.MainQueue.AddOperation(shopOperation);

            var shippingOperation = new GetShippingRatesOperation(client, checkout);

            shippingOperation.DidReceiveShippingRates += (op, rates) => {
                shippingRates = rates;
            };
            shippingOperation.FailedToReceiveShippingRates += (op, error) => {
                Console.WriteLine("Failed to retrieve shipping rates: {0}", error);
            };
            NSOperationQueue.MainQueue.AddOperation(shippingOperation);

            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;

            // Ensure both operations are completed before we reload the table view
            var blockOperation = NSBlockOperation.Create(() => {
                UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                TableView.ReloadData();
            });

            blockOperation.AddDependency(shopOperation);
            blockOperation.AddDependency(shippingOperation);
            NSOperationQueue.MainQueue.AddOperation(blockOperation);

            allOperations = new NSOperation[] {
                blockOperation,
                shopOperation,
                shippingOperation
            };
        }
 public void Create_Null()
 {
     // Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: *** -[NSBlockOperation addExecutionBlock:]: block is nil
     NSBlockOperation.Create(null);
 }