PageRenderTime 50ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/source/library/Interlace.Tests/Reactor/TestInvokeQueue.cs

https://bitbucket.org/VahidN/interlace
C# | 88 lines | 36 code | 17 blank | 35 comment | 0 complexity | c1f7e78a4aca9b009a982ffcef08abc7 MD5 | raw file
  1. #region Using Directives and Copyright Notice
  2. // Copyright (c) 2007-2010, Computer Consultancy Pty Ltd
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without
  6. // modification, are permitted provided that the following conditions are met:
  7. // * Redistributions of source code must retain the above copyright
  8. // notice, this list of conditions and the following disclaimer.
  9. // * Redistributions in binary form must reproduce the above copyright
  10. // notice, this list of conditions and the following disclaimer in the
  11. // documentation and/or other materials provided with the distribution.
  12. // * Neither the name of the Computer Consultancy Pty Ltd nor the
  13. // names of its contributors may be used to endorse or promote products
  14. // derived from this software without specific prior written permission.
  15. //
  16. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  17. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. // ARE DISCLAIMED. IN NO EVENT SHALL COMPUTER CONSULTANCY PTY LTD BE LIABLE
  20. // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21. // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  22. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  23. // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24. // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25. // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  26. // DAMAGE.
  27. using System;
  28. using System.Collections.Generic;
  29. using System.Text;
  30. using System.Threading;
  31. using MbUnit.Framework;
  32. using Interlace.ReactorService;
  33. #endregion
  34. namespace Interlace.Tests.Reactor
  35. {
  36. [TestFixture]
  37. public class TestInvokeQueue
  38. {
  39. [Test]
  40. public void TestQueue()
  41. {
  42. ServiceHost host = new ServiceHost();
  43. InvokeQueueTestService testService = new InvokeQueueTestService();
  44. host.AddService(testService);
  45. host.StartServiceHost();
  46. host.OpenServices();
  47. using (ManualResetEvent callbackEvent = new ManualResetEvent(false))
  48. {
  49. object state = new object();
  50. IAsyncResult resultFromCallback;
  51. object stateFromCallback;
  52. bool callbackWorked = false;
  53. IInvokeQueueTestInterface testInterface = testService.GetTestInterface(null);
  54. /*
  55. Hmm, blocking from deferreds is a bit tricky.
  56. Deferred<int> result = testInterface.GetReactorThreadId(false);
  57. int reactorThreadId = testService.EndGetReactorThreadId(result);
  58. Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, reactorThreadId);
  59. Assert.AreNotEqual(0, reactorThreadId);
  60. */
  61. bool callbackCompleted = callbackEvent.WaitOne(2000, false);
  62. Assert.IsTrue(callbackCompleted);
  63. Assert.IsTrue(callbackWorked);
  64. }
  65. host.StopServiceHost();
  66. }
  67. }
  68. }