public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Code to start the Xamarin Test Cloud Agent
#if ENABLE_TEST_CLOUD
            Xamarin.Calabash.Start();
#endif

            // Perform any additional setup after loading the view, typically from a nib.
            BlockButton.AccessibilityIdentifier = "myButton";
            BlockButton.TouchUpInside          += async delegate
            {
                _testBlocking = new TestThreads();
                await _testBlocking.RequestAccessAsync();

                Console.WriteLine("1");
            };

            PoolButton.TouchUpInside += async delegate
            {
                _testBlocking = new TestThreads();
                await _testBlocking.CallPool1Async();
            };

            ParallelButton.TouchUpInside += delegate
            {
                _testBlocking = new TestThreads();
                _testBlocking.CallParallel();
            };
        }
 public void DoTest()
 {
     _firstTestCounter = new CounterContainer();
     _errorTestCounter = new CounterContainer();
     var tt = new TestThreads(false, FirstTest, 1);
     tt.RunParallel(100);
     while (_firstTestCounter.Counter < 100)
     {
         Thread.Sleep(10);
     }
     Assert.AreEqual(100, _firstTestCounter.Counter);
     tt.Terminate();
 }
 public void DoTestMultiWithPar()
 {
     _firstTestCounter = new CounterContainer();
     _errorTestCounter = new CounterContainer();
     var tt = new TestThreads(false, SecondTest, 10);
     tt.RunParallel(1000, 2);
     while (_firstTestCounter.Counter < 1000 && _errorTestCounter.Counter==0)
     {
         Thread.Sleep(10);
     }
     Assert.AreEqual(0, _errorTestCounter.Counter);
     Assert.AreEqual(1000, _firstTestCounter.Counter);
     tt.Terminate();
 }
 public void DoTestMulti()
 {
     const int iterations = 10000;
     _firstTestCounter = new CounterContainer();
     _errorTestCounter = new CounterContainer();
     var tt = new TestThreads(false, FirstTest, 100);
     tt.RunParallel(iterations);
     while (_firstTestCounter.Counter < iterations)
     {
         Thread.Sleep(10);
     }
     Assert.AreEqual(iterations, _firstTestCounter.Counter);
     tt.Terminate();
 }
        public void DoTestMultiWithParAndReadingThread()
        {
            const int iterations = 10000;
            var lfq = new LockFreeQueue<int>();
            _sendCounter = new CounterContainer();
            _firstTestCounter = new CounterContainer();
            _errorTestCounter = new CounterContainer();
            var ttr = new TestThreads(false, ThirdTestReader, 5);
            ttr.RunParallel(iterations, lfq, true);

            var tts = new TestThreads(false, ThirdTestSender, 5);
            tts.RunParallel(iterations, lfq);
            while (_firstTestCounter.Counter < (iterations-1) && _errorTestCounter.Counter == 0)
            {
                Thread.Sleep(10);
            }
            Assert.AreEqual(0, _errorTestCounter.Counter);
            Assert.AreEqual(iterations, _sendCounter.Counter);
            Assert.AreEqual(iterations-1, _firstTestCounter.Counter);
            tts.Terminate();
            ttr.Terminate();
        }
 private void ThirdTestSender(object sender, TestThreads.TestThreadsEventArgs args)
 {
     var lfq = (LockFreeQueue<int>)args.Param;
     _sendCounter.Increment();
     lfq.Enqueue(args.CurrentCycle);
 }
 private void ThirdTestReader(object sender, TestThreads.TestThreadsEventArgs args)
 {
     var lfq = (LockFreeQueue<int>)args.Param;
     while (lfq.DequeueSingle()!=0)
     {
         _firstTestCounter.Increment();
     }
 }
 private void SecondTest(object sender, TestThreads.TestThreadsEventArgs args)
 {
     if (args.Param is int)
     {
         if ((int)args.Param == 2)
         {
             _firstTestCounter.Increment();
         }
     }
     else
     {
         _errorTestCounter.Increment();
     }
 }
 private void FirstTest(object sender, TestThreads.TestThreadsEventArgs args)
 {
     _firstTestCounter.Increment();
 }