상속: System.Web.UI.Page
예제 #1
0
 public async Task SslStream_DefaultTlsConfigurationAsync_Ok()
 {
     using (var test = new AsyncTest())
     {
         await test.RunTest();
     }
 }
예제 #2
0
        public IEnumerator GetAccessCodeFromTokenAsync_WebResponseSuccess_ReturnsToken()
        {
            LearningLayersOidcProvider lloidc        = new LearningLayersOidcProvider();
            IRestConnector             restConnector = A.Fake <IRestConnector>();

            A.CallTo(() => restConnector.PostAsync(A <string> .Ignored, A <string> .Ignored))
            .Returns(Task.FromResult(new WebResponse <string>("json string", null, 200)));
            lloidc.RestConnector = restConnector;
            lloidc.ClientData    = A.Fake <ClientData>();
            LearningLayersAuthorizationFlowAnswer answer = new LearningLayersAuthorizationFlowAnswer();

            answer.access_token = "myAccessToken";
            IJsonSerializer serializer = A.Fake <IJsonSerializer>();

            A.CallTo(() => serializer.FromJson <LearningLayersAuthorizationFlowAnswer>(A <string> .Ignored))
            .Returns(answer);
            lloidc.JsonSerializer = serializer;

            Task <string> task = lloidc.GetAccessTokenFromCodeAsync("", "");

            yield return(AsyncTest.WaitForTask(task));

            string res = task.Result;

            Assert.AreEqual(answer.access_token, res);
        }
예제 #3
0
 public void Multiple_Passes_FailIfNotPassed()
 {
     var test = new AsyncTest (multiple: true);
     test.PassHandler (this, EventArgs.Empty);
     // failIfNotPassed refers to explicit Assert.Pass() calls only, not PassHandler calls.
     Assert.Throws<AssertionException> (() => test.Assert (10, failIfNotPassed: true));
 }
예제 #4
0
        public void ReceiveRemove()
        {
            var person = new Person("remove");

            list.Add(person);

            var test = new AsyncTest();

            list.CollectionChanged += (sender, args) => {
                Assert.AreEqual(NotifyCollectionChangedAction.Remove, args.Action);
                Assert.IsNull(args.NewItems);
                Assert.IsNotNull(args.OldItems);
                CollectionAssert.Contains(args.OldItems, person);
                CollectionAssert.DoesNotContain(list, person);
                test.PassHandler(null, EventArgs.Empty);
            };

            this.server.SendAsync(new BuddyListMessage
            {
                ChangeAction = NotifyCollectionChangedAction.Remove,
                People       = new[] { person }
            });

            test.Assert(10000);
        }
 public StateMachine(AsyncTest instance, StringBuilder builder, string secondLine)
 {
     this.instance         = instance;
     this.builder          = builder;
     this.secondLine       = secondLine;
     this.completionSource = new TaskCompletionSource <string>();
 }
예제 #6
0
        public IEnumerator GetUserInfoAsync_JsonParseFailed_ReturnsNull()
        {
            LearningLayersOidcProvider lloidc        = new LearningLayersOidcProvider();
            IRestConnector             restConnector = A.Fake <IRestConnector>();

            A.CallTo(() => restConnector.GetAsync(A <string> .Ignored))
            .Returns(new WebResponse <string>("answer", null, 200));
            lloidc.RestConnector = restConnector;
            LearningLayersUserInfo userInfo   = new LearningLayersUserInfo("tester", "*****@*****.**", "Tester");
            IJsonSerializer        serializer = A.Fake <IJsonSerializer>();

            A.CallTo(() => serializer.FromJson <LearningLayersUserInfo>(A <string> .Ignored))
            .Returns(null);
            lloidc.JsonSerializer = serializer;

            LogAssert.Expect(LogType.Error, new Regex(@"\w*Could not parse user info\w*"));

            Task <IUserInfo> task = lloidc.GetUserInfoAsync("");

            yield return(AsyncTest.WaitForTask(task));

            IUserInfo res = task.Result;

            Assert.IsNull(res);
        }
예제 #7
0
 public async Task SslStream_DefaultTlsConfigurationAsync_Ok()
 {
     using (var test = new AsyncTest())
     {
         await test.RunTest();
     }
 }
예제 #8
0
    static void Main(string[] args)
    {
        AsyncTest a    = new AsyncTest();
        Task      task = a.MethodAsync();

        Console.WriteLine("Waiting in Main thread");
        task.Wait();
    }
예제 #9
0
        public void Multiple_Passes_NoFailures()
        {
            var test = new AsyncTest (multiple: true);
            test.PassHandler (this, EventArgs.Empty);
            test.PassHandler (this, EventArgs.Empty);

            test.Assert (10, failIfNotPassed: false);
        }
예제 #10
0
        public void Multiple_Passes_Failure()
        {
            var test = new AsyncTest (multiple: true);
            test.PassHandler (this, EventArgs.Empty);
            test.PassHandler (this, EventArgs.Empty);
            test.FailHandler (this, EventArgs.Empty);

            Assert.Throws<AssertionException> (() => test.Assert (10, failIfNotPassed: false));
        }
예제 #11
0
 public void ThrowsInvalidOperationExceptionWhenTransmissionIsAlreadySending()
 {
     AsyncTest.Run(async() =>
     {
         Transmission transmission = new Transmission(new Uri("http://uri"), new byte[] { 1, 2, 3, 4, 5 }, new HttpClient(), string.Empty, string.Empty); FieldInfo isSendingField = typeof(Transmission).GetField("isSending", BindingFlags.NonPublic | BindingFlags.Instance);
         isSendingField.SetValue(transmission, 1);
         await AssertEx.ThrowsAsync <InvalidOperationException>(() => transmission.SendAsync());
     });
 }
예제 #12
0
        private async void btnAsyncUpdateTable_Click(object sender, EventArgs e)
        {
            var result = await AsyncTest.CallingAsync();

            dohlcValues = AsyncTest.ConvertDatesToDohlcModel(dohlcValues, result);

            dgvDohlcValues.DataSource = dohlcValues;

            SqlConnector.InsertDohlcValuesToSql(dohlcValues);
        }
예제 #13
0
 public void ThrowsInvalidOperationExceptionWhenTransmissionIsAlreadySending()
 {
     AsyncTest.Run(async() =>
     {
         var transmission         = new TestableTransmission();
         FieldInfo isSendingField = typeof(Transmission).GetField("isSending", BindingFlags.NonPublic | BindingFlags.Instance);
         isSendingField.SetValue(transmission, 1, BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance, null, null);
         await AssertEx.ThrowsAsync <InvalidOperationException>(() => transmission.SendAsync());
     });
 }
예제 #14
0
        public IEnumerator ExtendedLogging_Enabled_CommentsLogged()
        {
            mtlLibrary.ContentLoader   = FakeContentLoaderFactory.CreateFakeLoader(content);
            mtlLibrary.ExtendedLogging = true;
            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            LogAssert.Expect(LogType.Log, new Regex(@"\w*Comment found\w*"));
        }
예제 #15
0
        public IEnumerator ExtendedLogging_Disabled_CommentsNotLogged()
        {
            mtlLibrary.ContentLoader   = FakeContentLoaderFactory.CreateFakeLoader(content);
            mtlLibrary.ExtendedLogging = false;
            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            LogAssert.NoUnexpectedReceived();
        }
예제 #16
0
        public void Connected()
        {
            var test = new AsyncTest ();

            client.Connected += test.PassHandler;
            client.Disconnected += test.FailHandler;

            client.ConnectAsync (new Target (Target.AnyIP, 0));

            test.Assert (10000);
        }
예제 #17
0
        public void Connected()
        {
            var test = new AsyncTest();

            client.Connected += test.PassHandler;
            client.Disconnected += test.FailHandler;

            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0));

            test.Assert (10000);
        }
예제 #18
0
        public IEnumerator GetMaterialConstructor_ExistentMatLibExistentMat_ReturnsNotNull()
        {
            mtlLibrary.ContentLoader = FakeContentLoaderFactory.CreateFakeLoader(content);
            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            MaterialConstructor res = mtlLibrary.GetMaterialConstructor(libraryName, "BlueMat");

            Assert.IsNotNull(res);
        }
예제 #19
0
        public IEnumerator LoadLibraryAsync_NewLibrary_LibraryLoadedReturnsTrue()
        {
            mtlLibrary.ContentLoader = FakeContentLoaderFactory.CreateFakeLoader(content);
            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            bool loaded = mtlLibrary.LibraryLoaded(libraryName);

            Assert.IsTrue(loaded, "The library should have been loaded but is not displayed as loaded");
        }
예제 #20
0
        public IEnumerator FetchDependencies_NoTexturesProvided_ReturnsTrue()
        {
            MaterialConstructor materialConstructor = new MaterialConstructor();
            Task <bool>         task = materialConstructor.FetchDependencies();

            yield return(AsyncTest.WaitForTask(task));

            bool success = task.Result;

            Assert.True(success);
        }
예제 #21
0
        public IEnumerator ImportAsync_ThreeObj_HasThreeChildren()
        {
            ObjImporter objImporter = SetUpObjImporter(threeObj, threeMtl);

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            Assert.AreEqual(3, res.transform.childCount);
        }
예제 #22
0
        public IEnumerator GetMaterialConstructor_ExistentMatLibExistentMat_MatConstrColorSet()
        {
            mtlLibrary.ContentLoader = FakeContentLoaderFactory.CreateFakeLoader(content);
            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            MaterialConstructor res = mtlLibrary.GetMaterialConstructor(libraryName, "BlueMat");

            Assert.IsNotNull(res);
            Assert.AreEqual(new Color(0.185991f, 0.249956f, 0.800000f), res.Color);
        }
예제 #23
0
        public void ServerConnectionConnected()
        {
            var provider = new MockConnectionProvider (MockProtocol.Instance);
            provider.Start (MessageTypes.Reliable);

            var test = new AsyncTest<ConnectionMadeEventArgs> (e => Assert.AreEqual (true, e.Connection.IsConnected));
            provider.ConnectionMade += test.PassHandler;

            var client = provider.GetClientConnection (MockProtocol.Instance);
            client.ConnectAsync (new Target (Target.AnyIP, 0), MessageTypes.Reliable);

            test.Assert (5000);
        }
예제 #24
0
        public IEnumerator ImportAsync_WebRequestSuccess_SetName()
        {
            ObjImporter objImporter = SetUpObjImporter(cubeObj, cubeMtl);

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            Assert.NotNull(res);
            Assert.AreEqual("test", res.name);
        }
예제 #25
0
        public IEnumerator ImportAsync_CubeObj_HasChild()
        {
            ObjImporter objImporter = SetUpObjImporter(cubeObj, cubeMtl);

            Task <GameObject> testTask = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(testTask));

            GameObject res = testTask.Result;

            Assert.NotNull(res);
            Assert.AreEqual(1, res.transform.childCount);
        }
예제 #26
0
        public IEnumerator ImportAsync_CubeObj_ChildHasCorrectMaterial()
        {
            ObjImporter objImporter = SetUpObjImporter(cubeObj, cubeMtl);

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            MeshRenderer mr = res.transform.GetChild(0).GetComponent <MeshRenderer>();

            Assert.AreEqual("TestMaterial", mr.sharedMaterial.name);
        }
예제 #27
0
        public IEnumerator LoadLibraryAsync_LoadFailed_LibraryLoadedReturnsFalse()
        {
            mtlLibrary.ContentLoader = FakeContentLoaderFactory.CreateFakeFailLoader <string>();

            LogAssert.Expect(LogType.Error, new Regex(@"\w*This is a simulated fail\w*"));

            Task task = LoadLibrary();

            yield return(AsyncTest.WaitForTask(task));

            bool loaded = mtlLibrary.LibraryLoaded(libraryName);

            Assert.IsFalse(loaded, "The import should have aborted but apparently, the library is shown as imported");
        }
            public void ThrowsInvalidOperationExceptionWhenTransmissionIsAlreadySending()
            {
                AsyncTest.Run(async() =>
                {
                    var request = new StubWebRequest();
                    request.OnBeginGetRequestStream = (callback, state) => TaskEx.Delay(TimeSpan.FromMilliseconds(10)).AsAsyncResult(callback, request);

                    var transmission             = new TestableTransmission();
                    transmission.OnCreateRequest = uri => request;

                    Task dontWait = transmission.SendAsync();
                    await AssertEx.ThrowsAsync <InvalidOperationException>(() => transmission.SendAsync());
                });
            }
예제 #29
0
        public IEnumerator ImportAsync_CubeObj_ChildHasCorrectMesh()
        {
            ObjImporter objImporter = SetUpObjImporter(cubeObj, cubeMtl);

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            MeshFilter mf = res.transform.GetChild(0).GetComponent <MeshFilter>();

            Assert.AreEqual(24, mf.sharedMesh.vertices.Length);  // 8 * 3 = 24 (every vertex belongs to three triangles)
            Assert.AreEqual(36, mf.sharedMesh.triangles.Length); // 12 *3 = 36
        }
예제 #30
0
        public IEnumerator FetchTextureAsync_WebRequestFailed_ReturnsNull()
        {
            TextureConstructor textureConstructor = new TextureConstructor(loadPath);

            textureConstructor.TextureLoader = FakeContentLoaderFactory.CreateFakeFailLoader <Texture2D>();

            LogAssert.Expect(LogType.Error, new Regex(@"\w*This is a simulated fail\w*"));

            Task <Texture2D> task = textureConstructor.FetchTextureAsync();

            yield return(AsyncTest.WaitForTask(task));

            Texture2D res = task.Result;

            Assert.Null(res);
        }
예제 #31
0
        public IEnumerator ImportAsync_EmptyObj_ReturnGameObject()
        {
            ObjImporter objImporter = SetUpObjImporter(emptyObj, emptyMtl);

            LogAssert.Expect(LogType.Warning, new Regex(@"\w*There is an object without parsed vertices\w*"));
            LogAssert.Expect(LogType.Error, new Regex(@"\w*No objects could be constructed.\w*"));

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            Assert.NotNull(res);
            Assert.AreEqual(0, res.transform.childCount);
        }
예제 #32
0
        public IEnumerator FetchTextureAsync_WebRequestSuccessful_ReturnsTexture()
        {
            TextureConstructor textureConstructor = new TextureConstructor(loadPath);
            Texture2D          expected           = new Texture2D(2, 2);

            textureConstructor.TextureLoader = FakeContentLoaderFactory.CreateFakeLoader(expected);

            Task <Texture2D> task = textureConstructor.FetchTextureAsync();

            yield return(AsyncTest.WaitForTask(task));

            Texture2D res = task.Result;

            Assert.NotNull(res);
            Assert.AreEqual(expected.imageContentsHash, res.imageContentsHash);
        }
예제 #33
0
 public static GameObject Find(string name)
 {
     if (MainForm.global_beh is AsyncTest)
     {
         AsyncTest beh = MainForm.global_beh as AsyncTest;
         if (name.Equals("Canvas"))
         {
             return(beh.canvas);
         }
         else if (name.Equals("Button"))
         {
             return(beh.button);
         }
     }
     return(null);
 }
예제 #34
0
        public IEnumerator FetchDependencies_TextureFetchFail_ReturnsFalse()
        {
            MaterialConstructor materialConstructor        = new MaterialConstructor();
            ITextureConstructor fakeTextureConstructorFail = A.Fake <ITextureConstructor>();

            A.CallTo(() => fakeTextureConstructorFail.FetchTextureAsync()).Returns(Task.FromResult <Texture2D>(null));
            materialConstructor.SetTexture("tex", fakeTextureConstructorFail);

            Task <bool> task = materialConstructor.FetchDependencies();

            yield return(AsyncTest.WaitForTask(task));

            bool success = task.Result;

            Assert.False(success);
        }
            public void AbortsPreviousAction()
            {
                AsyncTest.Run(async() =>
                {
                    var timer = new TaskTimer {
                        Delay = TimeSpan.FromMilliseconds(1)
                    };

                    bool actionInvoked = false;
                    timer.Start(() => Task.Factory.StartNew(() => actionInvoked = true));
                    timer.Cancel();

                    await Task.Delay(20);

                    Assert.False(actionInvoked);
                });
            }
예제 #36
0
        public IEnumerator GetAccessCodeFromTokenAsync_NoClientData_ReturnsEmptyString()
        {
            LearningLayersOidcProvider lloidc = new LearningLayersOidcProvider();

            lloidc.RestConnector = A.Fake <IRestConnector>();

            LogAssert.Expect(LogType.Error,
                             new Regex(@"\w*No client data supplied for the OpenID Connect Client\w*"));

            Task <string> task = lloidc.GetAccessTokenFromCodeAsync("", "");

            yield return(AsyncTest.WaitForTask(task));

            string res = task.Result;

            Assert.IsEmpty(res);
        }
예제 #37
0
        public IEnumerator ImportAsync_CubeObj_ChildHasComponents()
        {
            ObjImporter objImporter = SetUpObjImporter(cubeObj, cubeMtl);

            Task <GameObject> task = objImporter.ImportAsync("http://test.org/test.obj");

            yield return(AsyncTest.WaitForTask(task));

            GameObject res = task.Result;

            MeshFilter mf = res.transform.GetChild(0).GetComponent <MeshFilter>();

            Assert.NotNull(mf);
            MeshRenderer mr = res.transform.GetChild(0).GetComponent <MeshRenderer>();

            Assert.NotNull(mr);
        }
예제 #38
0
        public void DisconnectWithReason()
        {
            var test = new AsyncTest<ClientDisconnectedEventArgs> (e =>
            {
                Assert.AreEqual ("reason", e.CustomReason);
                Assert.AreEqual (ConnectionResult.Custom, e.Reason);
                Assert.IsTrue (e.Requested);
            });

            client.Connected += (sender, e) => client.DisconnectWithReason ("reason");
            client.Disconnected += test.PassHandler;

            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0));

            test.Assert (10000);
        }
예제 #39
0
        public void GenericMessageHandling()
        {
            var test = new AsyncTest (e =>
            {
                var me = (MessageEventArgs<MockMessage>)e;
                Assert.AreSame (connection, me.Connection);
                Assert.AreEqual ("hi", me.Message.Content);
            });

            Action<MessageEventArgs<MockMessage>> handler = e => test.PassHandler (test, e);

            client.RegisterMessageHandler (handler);

            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage { Content = "hi" }));

            test.Assert (10000);
        }
예제 #40
0
        public void FailIfNotPassed_False()
        {
            var test = new AsyncTest();

            test.Assert (10, failIfNotPassed: false);
        }
예제 #41
0
        public void DisconnectFromHandlerThread()
        {
            var test = new AsyncTest();

            Action<MessageEventArgs<MockMessage>> handler = e => {
                client.DisconnectAsync().ContinueWith (t => {
                    test.PassHandler (null, EventArgs.Empty);
                });
            };

            client.RegisterMessageHandler (handler);
            client.ConnectAsync (new Target (Target.AnyIP, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage { Content = "hi" }));

            test.Assert (10000);
        }
예제 #42
0
        public void RejectSha1()
        {
            TearDown();

            provider = new NetworkConnectionProvider (new [] { MockProtocol.Instance }, (IPEndPoint)EndPoint, MaxConnections, () => new RSACrypto(), new string[] { "SHA256" } );
            provider.Start (MessageTypes);

            var test = new AsyncTest<DisconnectedEventArgs> (d => Assert.AreEqual (ConnectionResult.FailedHandshake, d.Result));

            var client = new NetworkClientConnection (new[] { MockProtocol.Instance }, () => new MockSha1OnlyCrypto());
            client.ConnectAsync (EndPoint, MessageTypes);

            client.Connected += test.FailHandler;
            client.Disconnected += test.PassHandler;

            test.Assert (10000);
        }
예제 #43
0
        public void ISerializable()
        {
            byte[] buffer = new byte[20480];
            var writer = new BufferValueWriter (buffer);

            SerializableTester tester = new SerializableTester
            {
                Name = "MONKEY!",
                Numbers = new[] { 1, 2, 4, 8, 16, 32 }
            };

            var test = new AsyncTest();
            tester.SerializeCalled += test.PassHandler;

            writer.Write (context, tester);
            writer.Flush();

            var reader = new BufferValueReader (buffer);
            var serialized = SerializerExtensions.Read<SerializableTester> (reader, context);

            Assert.IsNotNull (serialized);
            Assert.AreEqual (tester.Name, serialized.Name);
            Assert.IsTrue (tester.Numbers.SequenceEqual (serialized.Numbers), "Numbers does not match");

            test.Assert (1000);
        }
예제 #44
0
        public void MessageHandlingGlobalOrder()
        {
            IServerConnection connection = null;

            var test = new AsyncTest(e =>
            {
                var me = (MessageEventArgs)e;
                Assert.AreSame (connection, me.Connection);
                Assert.IsInstanceOf (typeof(MockMessage), me.Message);
                Assert.AreEqual ("hi", ((MockMessage)me.Message).Content);
            });

            var server = new MockServer (MessageTypes.Reliable);
            server.AddConnectionProvider (provider, ExecutionMode.GlobalOrder);
            server.Start();

            Action<MessageEventArgs> handler = e => test.PassHandler (test, e);
            ((IContext)server).RegisterMessageHandler (MockProtocol.Instance, 1, handler);

            provider.ConnectionMade += (sender, e) => connection = e.Connection;

            var c = provider.GetClientConnection (protocol);
            c.ConnectAsync (new IPEndPoint (IPAddress.Any, 0), MessageTypes.Reliable);
            c.Send (new MockMessage { Content = "hi" });

            test.Assert (10000);
        }
예제 #45
0
        public void MessageHandling()
        {
            var test = new AsyncTest (e =>
            {
                var me = (MessageEventArgs)e;
                Assert.AreSame (connection, me.Connection);
                Assert.IsInstanceOf (typeof(MockMessage), me.Message);
                Assert.AreEqual ("hi", ((MockMessage)me.Message).Content);
            });

            Action<MessageEventArgs> handler = e => test.PassHandler (test, e);

            ((IContext)client).RegisterMessageHandler (MockProtocol.Instance, 1, handler);
            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage { Content = "hi" }));

            test.Assert (10000);
        }
예제 #46
0
        public void Disconnect()
        {
            var test = new AsyncTest<ClientDisconnectedEventArgs> (e =>
            {
                Assert.AreEqual (ConnectionResult.Custom, e.Reason);
                Assert.IsTrue (e.Requested);
            });

            client.Connected += (sender, e) => client.DisconnectAsync();
            client.Disconnected += test.PassHandler;

            client.ConnectAsync (new Target (Target.AnyIP, 0));

            test.Assert (10000);
        }
예제 #47
0
 public async Task<object> Any(AsyncTest request)
 {
     var response = await Client.PostAsync(new Echoes { Sentence = "Foo" });
     return response;
 }
예제 #48
0
        public void MultiProtocolMessageHandling()
        {
            var test = new AsyncTest (e =>
            {
                var me = (MessageEventArgs)e;
                Assert.AreSame (connection, me.Connection);
                Assert.IsTrue (me.Message is MockMessage2);
                Assert.AreEqual ("hi", ((MockMessage2)me.Message).Content);
            });

            Action<MessageEventArgs> handler = e => test.PassHandler (test, e);

            ((IContext)client).RegisterMessageHandler (MockProtocol.Instance, 1, handler);
            ((IContext)client).RegisterMessageHandler (MockProtocol2.Instance, 1, handler);

            client.ConnectAsync (new Target (Target.AnyIP, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage2 { Content = "hi" }));

            test.Assert (10000);
        }
예제 #49
0
        public void MultiProtocolGenericMessageHandling()
        {
            var test = new AsyncTest (e =>
            {
                var me = (MessageEventArgs<MockMessage2>)e;
                Assert.AreSame (connection, me.Connection);
                Assert.AreEqual ("hi", me.Message.Content);
            });

            Action<MessageEventArgs<MockMessage2>> handler = e => test.PassHandler (test, e);

            client.RegisterMessageHandler (handler);
            client.RegisterMessageHandler (handler);

            client.ConnectAsync (new Target (Target.AnyIP, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage2 { Content = "hi" }));

            test.Assert (10000);
        }
예제 #50
0
        public void IsConnected()
        {
            var test = new AsyncTest (passTimes: 2);

            bool first = true;

            client.PropertyChanged += (o, e) => {
                if (e.PropertyName != "IsConnected")
                    return;

                if (first) {
                    Assert.IsTrue (client.IsConnected);
                    first = false;

                    client.DisconnectAsync();
                } else
                    Assert.IsFalse (client.IsConnected);

                test.PassHandler (null, EventArgs.Empty);
            };

            client.ConnectAsync (new Target (Target.AnyIP, 0));

            test.Assert (10000);
        }
예제 #51
0
        public void DisconnectWhileReceiving()
        {
            var test = new AsyncTest<ClientDisconnectedEventArgs> (e =>
            {
                Assert.AreEqual (ConnectionResult.Custom, e.Reason);
                Assert.IsTrue (e.Requested);
            });

            bool send = true;
            client.Connected += (sender, e) =>
            {
                new Thread (() =>
                {
                    MockMessage m = new MockMessage { Content = "asdf" };
                    for (int i = 0; i < 10000 && send; ++i)
                        connection.Receive (new MessageEventArgs (connection, m));
                }).Start();

                Thread.Sleep (50);
                client.DisconnectAsync();
            };

            client.Disconnected += test.PassHandler;

            client.ConnectAsync (new Target (Target.AnyIP, 0));

            test.Assert (10000);
            send = false;
        }
예제 #52
0
        public void DisconnectFromHandlerThread()
        {
            var test = new AsyncTest();

            Action<MessageEventArgs<MockMessage>> handler = e =>
            {
                client.Disconnect (true);
                test.PassHandler (null, EventArgs.Empty);
            };

            client.RegisterMessageHandler (handler);
            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0));
            connection.Receive (new MessageEventArgs (connection, new MockMessage { Content = "hi" }));

            test.Assert (10000);
        }
예제 #53
0
        public void ConnectionMade()
        {
            var server = new MockServer (provider, MessageTypes.Reliable);
            server.Start();

            var test = new AsyncTest();
            server.ConnectionMade += test.PassHandler;

            var client = provider.GetClientConnection (protocol);
            client.ConnectAsync (new IPEndPoint (IPAddress.Any, 0), MessageTypes.Reliable);

            test.Assert (5000);
        }
예제 #54
0
        public void ConnectionLimitRestartListening()
        {
            IServerConnection connection = null;
            provider.ConnectionMade += (sender, e) =>
            {
                if (connection == null)
                    connection = e.Connection;
            };

            ConnectionLimit();

            Assert.IsNotNull (connection);

            connection.DisconnectAsync();

            AsyncTest test  = new AsyncTest();
            provider.ConnectionMade += test.PassHandler;

            IClientConnection client = GetNewClientConnection();
            client.Disconnected += test.FailHandler;
            client.ConnectAsync (Target, MessageTypes);

            test.Assert (10000);
        }
예제 #55
0
        public void GenericMessageHandling()
        {
            IServerConnection connection = null;

            var test = new AsyncTest (e =>
            {
                var me = (MessageEventArgs<MockMessage>)e;
                Assert.AreSame (connection, me.Connection);
                Assert.AreEqual ("hi", me.Message.Content);
            });

            var server = new MockServer (provider, MessageTypes.Reliable);
            server.Start();

            Action<MessageEventArgs<MockMessage>> handler = e => test.PassHandler (test, e);
            server.RegisterMessageHandler (handler);

            provider.ConnectionMade += (sender, e) => connection = e.Connection;

            var c = provider.GetClientConnection (protocol);
            c.ConnectAsync (new IPEndPoint (IPAddress.Any, 0), MessageTypes.Reliable);
            c.Send (new MockMessage { Content = "hi" });

            test.Assert (10000);
        }
예제 #56
0
        public void PingPong()
        {
            AsyncTest test = new AsyncTest();

            IServerConnection connection = null;
            provider.ConnectionMade += (sender, e) =>
            {
                if (connection == null)
                    connection = e.Connection;
            };

            provider.Start (MessageTypes);

            ((NetworkConnectionProvider)provider).PingFrequency = 1000;
            var client = GetNewClientConnection();
            client.Disconnected += test.FailHandler;
            client.ConnectAsync (Target, MessageTypes);

            test.Assert (30000, false);
            Assert.IsNotNull (connection);
            Assert.IsTrue (connection.IsConnected);
            Assert.IsTrue (client.IsConnected);
        }
예제 #57
0
        public void TryGetBufferBlocksAndExisting()
        {
            var buffer = new BufferPool (128, 1);

            SocketAsyncEventArgs e;
            buffer.TryGetBuffer (out e);

            DateTime now = DateTime.Now;

            SocketAsyncEventArgs second = null;
            var test = new AsyncTest (args => {
                Assert.That (DateTime.Now - now, Is.GreaterThan (TimeSpan.FromSeconds (1)));
                Assert.That (second, Is.SameAs (e));
            });

            Task.Run (() => {
                Assert.IsTrue (buffer.TryGetBuffer (out second));
            }).ContinueWith (t => {
                test.PassHandler (null, EventArgs.Empty);
            });

            Task.Delay (1000).ContinueWith (t => {
                buffer.PushBuffer (e);
            });

            test.Assert (2000);
        }
예제 #58
0
        public void ConnectionLimit()
        {
            provider.Start (MessageTypes);

            AutoResetEvent wait = new AutoResetEvent (false);
            int counter = 0;
            provider.ConnectionMade += (s, e) =>
            {
                if (Interlocked.Increment (ref counter) == MaxConnections)
                    wait.Set();
            };

            IClientConnection client;
            AsyncTest test;
            for (int i = 0; i < MaxConnections; ++i)
            {
                test  = new AsyncTest();

                client = GetNewClientConnection();
                client.Connected += test.PassHandler;
                client.Disconnected += test.FailHandler;
                client.ConnectAsync (Target, MessageTypes);

                test.Assert (10000);
            }

            if (!wait.WaitOne (30000))
                Assert.Fail ("MaxConnections was not reached in time");

            test = new AsyncTest();
            provider.ConnectionMade += test.FailHandler;
            client = GetNewClientConnection();
            client.Disconnected += test.PassHandler;
            client.ConnectAsync (Target, MessageTypes);

            test.Assert (10000, false);
        }
예제 #59
0
        public void FailIfNotPassed()
        {
            var test = new AsyncTest();

            Assert.Throws<AssertionException> (() => test.Assert (10, failIfNotPassed: true));
        }
예제 #60
0
        public void DisconnectedFromConnection()
        {
            var test = new AsyncTest<ClientDisconnectedEventArgs> (e =>
            {
                Assert.IsFalse (e.Requested);
                Assert.AreEqual (ConnectionResult.EncryptionMismatch, e.Reason);
            });

            client.Connected += (s, e) => connection.Disconnect (ConnectionResult.EncryptionMismatch);
            client.Disconnected += test.PassHandler;

            client.ConnectAsync (new Target (Target.AnyIP, 0));

            test.Assert (1000);
        }