Beispiel #1
0
        public void ClientDisconnected_ServerRaisesErrorMessage()
        {
            var failedOrigin = IntegrationTestsHelper
                               .GetOriginBuilder()
                               .UseSerializer(IntegrationTestsHelper.GetThrowsSerializationRuleFor <string>());

            using (var tcpPair = new TcpConnectionPair <ITestContract, ITestContract, TestContractMock>
                                     (failedOrigin, IntegrationTestsHelper.GetProxyBuilder()))
            {
                var awaiter = new EventAwaiter <ClientDisconnectEventArgs <ITestContract, TcpChannel> >();
                tcpPair.Server.Disconnected += awaiter.EventRaised;

                //provokes exception at origin-side serialization
                try
                {
                    tcpPair.ProxyContract.Ask("some string");
                }
                catch (RemoteSerializationException) {}

                var receivedArgs = awaiter.WaitOneOrDefault(500);
                //Client disconnected event is expected
                Assert.IsNotNull(receivedArgs);
                Assert.IsNotNull(receivedArgs.ErrorMessageOrNull);
                Assert.AreEqual(ErrorType.SerializationError, receivedArgs.ErrorMessageOrNull.ErrorType);
            }
        }
        public async Task ReactsToLiveEvents()
        {
            timeScope.AdvanceTime(1);

            var player = ClientMock.AddPlayer("Newguy");

            player.Logs.WriteEventLog("42 other players are online. You are on Exodus (765 totally in Wurm).");

            var skillApi = Fixture.WurmApiManager.Characters.Get("Newguy")
                           .Skills;

            // allow WurmApi to pick everything
            await Task.Delay(1000);

            timeScope.AdvanceTime(1);

            var awaiter = new EventAwaiter <SkillsChangedEventArgs>();

            skillApi.SkillsChanged += awaiter.GetEventHandler();

            player.Logs.WriteSkillLog("Masonry", 58.754f);
            awaiter.WaitInvocations(1);
            awaiter.WaitUntilMatch(list => list.Any(args => args.HasSkillChanged("Masonry")));

            var skill = await skillApi.TryGetCurrentSkillLevelAsync("Masonry", new ServerGroup("FREEDOM"), TimeSpan.MaxValue);

            Expect(skill.Value, EqualTo(58.754f));
        }
Beispiel #3
0
        public async Task GetDeviceState_ENUM_ALL()
        {
            // Check NotOpened State for secondary camera.
            if (IsSupportedSecondaryCamera())
            {
                Assert.That(Camera.GetDeviceState(CameraDevice.Front), Is.EqualTo(CameraDeviceState.NotOpened));
            }

            // Check NotOpened State.
            Assert.That(Camera.GetDeviceState(CameraDevice.Rear), Is.EqualTo(CameraDeviceState.NotOpened));

            /* Opened state cannot be tested.
             * DeviceState is internally translated from NotOpened state to Working state after calling StartPreview method.
             */

            using (var eventWaiter = EventAwaiter <CameraStateChangedEventArgs> .Create())
            {
                TestCamera.StateChanged += eventWaiter;

                TestCamera.StartPreview();

                await eventWaiter.IsRaisedAsync();

                // Check Working State.
                Assert.That(Camera.GetDeviceState(CameraDevice.Rear), Is.EqualTo(CameraDeviceState.Working));
            }
        }
        public async Task HitGenesisBlockDuringInitializationAsync()
        {
            var chain = new ConcurrentChain(Network.RegTest);

            foreach (var n in Enumerable.Range(0, 3))
            {
                await AddBlockAsync(chain);
            }
            using var notifier = CreateNotifier(chain);
            var blockAwaiter = new EventAwaiter <Block>(
                h => notifier.OnBlock += h,
                h => notifier.OnBlock -= h);
            var reorgAwaiter = new EventAwaiter <uint256>(
                h => notifier.OnReorg += h,
                h => notifier.OnReorg -= h);

            await notifier.StartAsync(CancellationToken.None);

            // No block notifications nor reorg notifications
            await Assert.ThrowsAsync <OperationCanceledException>(() => blockAwaiter.WaitAsync(TimeSpan.FromSeconds(1)));

            await Assert.ThrowsAsync <OperationCanceledException>(() => reorgAwaiter.WaitAsync(TimeSpan.FromSeconds(1)));

            Assert.Equal(chain.Tip.HashBlock, notifier.BestBlockHash);

            await notifier.StopAsync(CancellationToken.None);
        }
Beispiel #5
0
        public async Task HdrCaptureProgress_CHECK_EVENT()
        {
            if (TestCamera.Capabilities.IsHdrCaptureSupported == false)
            {
                Assert.Pass("HDR feature is not supported.");
            }

            using (var completeWaiter = EventAwaiter.Create())
                using (var eventWaiter = EventAwaiter <HdrCaptureProgressEventArgs> .Create())
                {
                    TestCamera.Settings.HdrMode = CameraHdrMode.Enable;

                    TestCamera.HdrCaptureProgress += eventWaiter;
                    TestCamera.CaptureCompleted   += completeWaiter;

                    TestCamera.StartPreview();
                    TestCamera.StartCapture();

                    var eventArgs = await eventWaiter.GetResultAsync();

                    Assert.That(eventArgs.Percent, Is.GreaterThan(0), "HDR progress should be bigger than 0.");

                    await completeWaiter.IsRaisedAsync();
                }
        }
            public async Task ReactsToCurrentServerChange()
            {
                //mocking current time to avoid test breaking precisely on midnight
                using (var scope = TimeStub.CreateStubbedScope())
                {
                    scope.OverrideNow(new DateTime(2015, 10, 06, 03, 10, 30));

                    var subscriber =
                        new Subscriber <CharacterDirectoriesChanged>(Fixture.WurmApiManager.InternalEventAggregator);
                    var serverChangeAwaiter = new EventAwaiter <PotentialServerChangeEventArgs>();

                    var playerdir = ClientMock.AddPlayer("Jack");
                    playerdir.SetConfigName("default");

                    // have to immediatelly create file, because during log monitor creation, existing file contents will not trigger events.
                    playerdir.Logs.CreateEventLogFile();
                    // have to wait until wurmapi picks up this folder
                    subscriber.WaitMessages(1);

                    var character = System.Get("Jack");
                    character.LogInOrCurrentServerPotentiallyChanged += serverChangeAwaiter.GetEventHandler();

                    Trace.WriteLine("writing first event");
                    playerdir.Logs.WriteEventLog("5 other players are online. You are on Exodus (50 totally in Wurm).");

                    serverChangeAwaiter.WaitUntilMatch(
                        list =>
                        list.Any(args => args.ServerName == new ServerName("Exodus")));

                    var server = await character.TryGetCurrentServerAsync();

                    Expect(server.ServerName, EqualTo(new ServerName("Exodus")));

                    Trace.WriteLine(
                        "writing second event");
                    playerdir.Logs.WriteEventLog(
                        "5 other players are online. You are on Deliverance (50 totally in Wurm).");

                    serverChangeAwaiter.WaitUntilMatch(
                        list =>
                        list.Any(args => args.ServerName == new ServerName("Deliverance")));

                    server = await character.TryGetCurrentServerAsync();

                    Expect(server.ServerName, EqualTo(new ServerName("Deliverance")));

                    Trace.WriteLine("writing third event");
                    playerdir.Logs.WriteEventLog(
                        "5 other players are online. You are on Deliverance (50 totally in Wurm).");

                    serverChangeAwaiter.WaitUntilMatch(
                        list =>
                        list.Any(args => args.ServerName == new ServerName("Deliverance")));

                    server = await character.TryGetCurrentServerAsync();

                    Expect(server.ServerName, EqualTo(new ServerName("Deliverance")));
                }
            }
Beispiel #7
0
        public void Setup()
        {
            var batmobile = "batmobile";
            configMock = ClientMock.AddConfig(batmobile);

            awaiter = new EventAwaiter<EventArgs>();
            System.AnyConfigChanged += awaiter.Handle;
        }
Beispiel #8
0
        /// <summary>
        /// Send string to the server, end with new line and wait for a reply. if the server doesn't reply in given time, return null.
        /// </summary>
        /// <param name="data"></param>
        /// <param name="timeout">how maximum time we need to wait for the reply</param>
        public async Task <Message> SendLineAndGetReplyAsync(string data, TimeSpan timeout)
        {
            var eventAwaiter = new EventAwaiter <Message>(h => DataReceived += h, h => DataReceived -= h);

            await SendLineAsync(data);

            return(await eventAwaiter.WaitForEventRaised.TimeoutAfter(timeout));
        }
Beispiel #9
0
        public static async Task <IPreviewBeatmapLevel?> DownloadSong(string levelId, CancellationToken cancellationToken)
        {
            string hash = levelId.Replace("custom_level_", "");
            var    bm   = await BeatSaverSharp.BeatSaver.Client.Hash(hash, cancellationToken);

            string folderPath = GetSongDirectoryName(bm.Key, bm.Metadata.SongName, bm.Metadata.LevelAuthorName);

            folderPath = Path.Combine(CustomLevelsFolder, folderPath);
            if (bm == null)
            {
                Plugin.Log?.Warn($"Could not find song '{hash}' on Beat Saver.");
                return(null);
            }
            byte[] beatmapBytes = await bm.DownloadZip(false, cancellationToken);

            using (var ms = new MemoryStream(beatmapBytes))
            {
                var result = await ExtractZip(ms, folderPath);

                if (folderPath != result.OutputDirectory)
                {
                    folderPath = result.OutputDirectory ?? throw new Exception("Zip extract failed, no output directory.");
                }
                if (result.Exception != null)
                {
                    throw result.Exception;
                }
            }
            Plugin.Log.Info($"Downloaded song to '{folderPath}'");

            using (var awaiter = new EventAwaiter <SongCore.Loader, Dictionary <string, CustomPreviewBeatmapLevel> >(cancellationToken))
            {
                try
                {
                    SongCore.Loader.SongsLoadedEvent += awaiter.OnEvent;

                    SongCore.Collections.AddSong($"custom_level_{hash}", folderPath);
                    SongCore.Loader.Instance.RefreshSongs(false);
                    await awaiter.Task;
                }
                catch (OperationCanceledException)
                { }
                catch (Exception e)
                {
                    Plugin.Log?.Error($"Error waiting for songs to load: {e.Message}");
                    Plugin.Log?.Debug(e);
                    throw;
                }
                finally
                {
                    SongCore.Loader.SongsLoadedEvent -= awaiter.OnEvent;
                }
            }

            CustomPreviewBeatmapLevel beatmap = SongCore.Loader.GetLevelByHash(hash);

            return(beatmap);
        }
        public void Subscribe_AllLogs()
        {
            EventAwaiter <LogsMonitorEventArgs> awaiter = new EventAwaiter <LogsMonitorEventArgs>();
            var handler = awaiter.GetEventHandler();

            System.Subscribe(TestGuyCharacterName.Capitalized, LogType.AllLogs, handler);

            WriteToLogFile("_Event.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("_Event.2014-01-01.txt", "[00:00:12] Horses like this one have many uses.");

            WriteToLogFile("_Skills.2014-01-01.txt", "[00:03:15] Smartness increased by 24 to 48.");

            WriteToLogFile("PM__Anotherguy.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("PM__Anotherguy.2014-01-01.txt", "[00:00:18] <Anotherguy> Smartness is a very useful skill!");

            awaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                    args.CharacterName == TestGuyCharacterName &&
                    args.LogType == LogType.Event &&
                    args.WurmLogEntries.Any(
                        entry =>
                        entry.Content == "Horses like this one have many uses." &&
                        entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 12)));
                return(match1);
            });
            awaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                    args.CharacterName == TestGuyCharacterName &&
                    args.LogType == LogType.Skills &&
                    args.WurmLogEntries.Any(
                        entry =>
                        entry.Content == "Smartness increased by 24 to 48." &&
                        entry.Timestamp == new DateTime(2014, 1, 1, 0, 3, 15)));
                return(match1);
            });
            awaiter.WaitUntilMatch(list =>
            {
                var isPm   = list.Any(args => args.LogType == LogType.Pm);
                var match1 = list.Any(
                    args =>
                    args.CharacterName == TestGuyCharacterName &&
                    args.LogType == LogType.Pm &&
                    args.PmRecipientNormalized == "ANOTHERGUY" &&
                    args.PmRecipientCapitalized == "Anotherguy" &&
                    args.WurmLogEntries.Any(
                        entry =>
                        entry.Content == "Smartness is a very useful skill!" &&
                        entry.Source.Contains("Anotherguy") &&
                        entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 18)));
                return(match1);
            });

            System.Unsubscribe(TestGuyCharacterName.Capitalized, handler);
        }
        public void Setup()
        {
            var batmobile = "batmobile";

            configMock = ClientMock.AddConfig(batmobile);

            awaiter = new EventAwaiter <EventArgs>();
            System.AnyConfigChanged += awaiter.Handle;
        }
Beispiel #12
0
 public void Connect()
 {
     _eventAwaiter        = new EventAwaiter <IConnection <TOriginContractInterface, TestChannel> >();
     Server.AfterConnect += _eventAwaiter.EventRaised;
     Server.StartListening();
     Server.TestListener.ImmitateAccept(ClientChannel);
     OriginConnection = _eventAwaiter.WaitOneOrDefault(500);
     Assert.IsNotNull(OriginConnection);
 }
Beispiel #13
0
 public void Connect()
 {
     _eventAwaiter        = new EventAwaiter <IConnection <TOriginContractInterface, TcpChannel> >();
     Server.AfterConnect += _eventAwaiter.EventRaised;
     Server.StartListening();
     ClientChannel.Connect(new IPEndPoint(IPAddress.Loopback, 12345));
     OriginConnection = _eventAwaiter.WaitOneOrDefault(500);
     Assert.IsNotNull(OriginConnection);
 }
        async Task WaitPopupClosing()
        {
            CancellationToken = new CancellationToken();
            Popup popup = Popup;

            AsyncAction = EventAwaiter.WaitEventAsync <object>(handler => popup.Closed += handler, handler => popup.Closed -= handler, () => { }).AsAsyncAction();
            await AsyncAction;

            popup = null;
        }
Beispiel #15
0
        public void Setup()
        {
            invoker = new PublicEventInvoker(new ThreadPoolMarshaller(logger), logger)
            {
                LoopDelayMillis = 1
            };

            eventAwaiter = new EventAwaiter <EventArgs>();
            Foovent     += eventAwaiter.Handle;
        }
Beispiel #16
0
        private static async void ShowExceptions()
        {
            var eventAwaiter = new EventAwaiter <FirstChanceExceptionEventArgs>();

            AppDomain.CurrentDomain.FirstChanceException += eventAwaiter.EventRaised;
            while (true)
            {
                Console.WriteLine("AppDomain exception:{0}", (await eventAwaiter).Exception.GetType());
            }
        }
Beispiel #17
0
        public async Task <AMCPError> SendCommandAndGetStatusAsync(string command)
        {
            var eventWaiter = new EventAwaiter <AMCPEventArgs>(
                h => ResponseParsed += h,
                h => ResponseParsed -= h);

            ServerConnection.SendString(command);
            var data = await eventWaiter.WaitForEventRaised;

            return(data?.Error ?? AMCPError.UndefinedError);
        }
Beispiel #18
0
        public async Task Preview_CHECK_EVENT()
        {
            using (var eventWaiter = EventAwaiter <CameraStateChangedEventArgs> .Create())
            {
                TestCamera.StateChanged += eventWaiter;

                TestCamera.StartPreview();

                Assert.That(await eventWaiter.IsRaisedAsync());
            }
        }
Beispiel #19
0
        private static async void ShowExceptions()
        {
            var eventAwaiter = new EventAwaiter <FirstChanceExceptionEventArgs>();

            AppDomain.CurrentDomain.FirstChanceException += eventAwaiter.EventRaised;

            while (true)
            {
                Console.WriteLine($"AppDomain exception: {(await eventAwaiter).Exception.GetType()}");// awaiter 充当 异步方法的状态机 和 被引发事件之间的 “粘合剂”
            }
        }
        public void SubscribePmLog_TriggerWithSingleEvent()
        {
            EventAwaiter <LogsMonitorEventArgs> anotherGuyAwaiter        = new EventAwaiter <LogsMonitorEventArgs>();
            EventAwaiter <LogsMonitorEventArgs> unrelatedGuyAwaiter      = new EventAwaiter <LogsMonitorEventArgs>();
            EventHandler <LogsMonitorEventArgs> anotherGuyEventHandler   = anotherGuyAwaiter.GetEventHandler();
            EventHandler <LogsMonitorEventArgs> unrelatedGuyEventHandler = unrelatedGuyAwaiter.GetEventHandler();

            System.SubscribePm(TestGuyCharacterName.Capitalized, "Anotherguy", anotherGuyEventHandler);
            System.SubscribePm(TestGuyCharacterName.Capitalized, "Unrelatedguy", unrelatedGuyEventHandler);

            WriteToLogFile("PM__Anotherguy.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("PM__Anotherguy.2014-01-01.txt",
                           "[00:00:12] <Anotherguy> Horses like this one have many uses.");

            anotherGuyAwaiter.WaitInvocations(1);
            anotherGuyAwaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                    args.CharacterName == TestGuyCharacterName &&
                    args.PmRecipientNormalized == "ANOTHERGUY" &&
                    args.PmRecipientCapitalized == "Anotherguy" &&
                    args.WurmLogEntries.Any(
                        entry =>
                        entry.Content == "Horses like this one have many uses." &&
                        entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 12) &&
                        entry.Source == "Anotherguy"));
                return(match1);
            });

            Expect(unrelatedGuyAwaiter.Invocations.Count(), EqualTo(0));

            System.UnsubscribePm(TestGuyCharacterName.Capitalized, "Anotherguy", anotherGuyEventHandler);

            WriteToLogFile("PM__Anotherguy.2014-01-01.txt",
                           "[00:00:13] <Anotherguy> Horses like this one have many uses.");

            Thread.Sleep(1000);
            var unexpected1 = anotherGuyAwaiter.Invocations.Any(
                args =>
                args.WurmLogEntries.Any(
                    entry =>
                    entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 13)));
            var unexpected2 = anotherGuyAwaiter.Invocations.Any(
                args =>
                args.WurmLogEntries.Any(
                    entry =>
                    entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 13)));

            Expect(unexpected1, False);
            Expect(unexpected2, False);
        }
Beispiel #21
0
 public TcpConnectionPair(PresentationBuilder <TOriginContractInterface> originBuilder,
                          PresentationBuilder <TProxyContractInterface> proxyBuider, bool connect = true)
 {
     Server               = originBuilder.CreateTcpServer(IPAddress.Loopback, 12345);
     ClientChannel        = new TcpChannel();
     ProxyConnection      = proxyBuider.UseChannel(ClientChannel).Build();
     _eventAwaiter        = new EventAwaiter <IConnection <TOriginContractInterface, TcpChannel> >();
     Server.AfterConnect += _eventAwaiter.EventRaised;
     if (connect)
     {
         Connect();
     }
 }
Beispiel #22
0
        public void ProxySayCall_NoThreadDispatcher_OriginSayCalled(string sentMessage)
        {
            using (var tcpPair = new TcpConnectionPair())
            {
                EventAwaiter <string> callAwaiter = new EventAwaiter <string>();
                tcpPair.OriginContract.SayMethodWasCalled += callAwaiter.EventRaised;

                tcpPair.ProxyConnection.Contract.Say(sentMessage);
                var received = callAwaiter.WaitOneOrDefault(500);

                Assert.AreEqual(sentMessage, received);
            }
        }
Beispiel #23
0
 public void Interrupted_CHECK_EVENT()
 {
     using (var eventWaiter = EventAwaiter <CameraInterruptedEventArgs> .Create())
     {
         try
         {
             TestCamera.Interrupted += eventWaiter;
         }
         catch (Exception ex)
         {
             Assert.Fail("Exception is occured. msg : " + ex.ToString());
         }
     }
 }
Beispiel #24
0
 public void ErrorOccurred_CHECK_EVENT()
 {
     using (var eventWaiter = EventAwaiter <CameraErrorOccurredEventArgs> .Create())
     {
         try
         {
             TestCamera.ErrorOccurred += (s, e) => { };
         }
         catch (Exception ex)
         {
             Assert.Fail("Exception is occured. msg : " + ex.ToString());
         }
     }
 }
        public void SubscribePmLog_TriggerWithSingleEvent()
        {
            EventAwaiter<LogsMonitorEventArgs> anotherGuyAwaiter = new EventAwaiter<LogsMonitorEventArgs>();
            EventAwaiter<LogsMonitorEventArgs> unrelatedGuyAwaiter = new EventAwaiter<LogsMonitorEventArgs>();
            EventHandler<LogsMonitorEventArgs> anotherGuyEventHandler = anotherGuyAwaiter.GetEventHandler();
            EventHandler<LogsMonitorEventArgs> unrelatedGuyEventHandler = unrelatedGuyAwaiter.GetEventHandler();

            System.SubscribePm(TestGuyCharacterName, new CharacterName("Anotherguy"), anotherGuyEventHandler);
            System.SubscribePm(TestGuyCharacterName, new CharacterName("Unrelatedguy"), unrelatedGuyEventHandler);

            WriteToLogFile("PM__Anotherguy.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("PM__Anotherguy.2014-01-01.txt",
                "[00:00:12] <Anotherguy> Horses like this one have many uses.");

            anotherGuyAwaiter.WaitInvocations(1);
            anotherGuyAwaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                        args.CharacterName == TestGuyCharacterName
                        && args.ConversationNameNormalized == "ANOTHERGUY"
                        && args.WurmLogEntries.Any(
                            entry =>
                                entry.Content == "Horses like this one have many uses."
                                && entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 12)
                                && entry.Source == "Anotherguy"));
                return match1;
            });

            Expect(unrelatedGuyAwaiter.Invocations.Count(), EqualTo(0));

            System.UnsubscribePm(TestGuyCharacterName, new CharacterName("Anotherguy"), anotherGuyEventHandler);

            WriteToLogFile("PM__Anotherguy.2014-01-01.txt",
                "[00:00:13] <Anotherguy> Horses like this one have many uses.");

            Thread.Sleep(1000);
            var unexpected1 = anotherGuyAwaiter.Invocations.Any(
                args =>
                    args.WurmLogEntries.Any(
                        entry =>
                            entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 13)));
            var unexpected2 = anotherGuyAwaiter.Invocations.Any(
                args =>
                    args.WurmLogEntries.Any(
                        entry =>
                            entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 13)));
            Expect(unexpected1, False);
            Expect(unexpected2, False);
        }
Beispiel #26
0
        public async Task StopPreview_CHECK_STATE()
        {
            using (var eventWaiter = EventAwaiter <CameraStateChangedEventArgs> .Create())
            {
                TestCamera.StateChanged += eventWaiter;

                TestCamera.StartPreview();

                await eventWaiter.IsRaisedAsync();
            }

            TestCamera.StopPreview();
            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Created));
        }
Beispiel #27
0
        public async Task DisplayReuseHint_PROPERTY_READ_WRITE()
        {
            using (var eventWaiter = EventAwaiter <CameraStateChangedEventArgs> .Create())
            {
                TestCamera.StateChanged += eventWaiter;

                TestCamera.StartPreview();

                await eventWaiter.IsRaisedAsync();
            }

            TestCamera.DisplayReuseHint = true;
            Assert.IsNotNull(TestCamera.DisplayReuseHint, "display reuse hint should not be null.");
            Assert.IsTrue(TestCamera.DisplayReuseHint, "display reuse hint is not same as set value.");
        }
        public void TriggersEventOnChanged()
        {
            IWurmConfig config = System.GetConfig(configMock.Name);

            Expect(config.NoSkillMessageOnFavorChange, False);

            var configAwaiter = new EventAwaiter <EventArgs>();

            config.ConfigChanged += configAwaiter.Handle;

            configMock.GameSettings.ChangeValue("skillgain_no_favor", "true");

            awaiter.WaitInvocations(2, 10000);

            Expect(config.NoSkillMessageOnFavorChange, True);
        }
Beispiel #29
0
 private static void CheckProtobuffEchoTransaction(int itemsSize)
 {
     using (var tcpPair = new TcpConnectionPair
                          <ISingleMessageContract <Company>,
                           ISingleMessageContract <Company>,
                           SingleMessageContract <Company> >())
     {
         EventAwaiter <Company> callAwaiter = new EventAwaiter <Company>();
         tcpPair.OriginContract.SayCalled += callAwaiter.EventRaised;
         var company = IntegrationTestsHelper.CreateCompany(itemsSize);
         tcpPair.ProxyConnection.Contract.Ask(company);
         var received = callAwaiter.WaitOneOrDefault(5000);
         Assert.IsNotNull(received);
         received.AssertIsSameTo(company);
     }
 }
Beispiel #30
0
        public async Task State_GET_ENUM_ALL()
        {
            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Created));

            TestCamera.StartPreview();
            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Preview));

            using (var eventWaiter = EventAwaiter <EventArgs> .Create())
            {
                TestCamera.CaptureCompleted += eventWaiter;

                TestCamera.StartCapture();

                Assert.That(await eventWaiter.IsRaisedAsync());
            }
        }
Beispiel #31
0
        public async Task MediaPacketPreview_CHECK_EVENT()
        {
            if (TestCamera.Capabilities.IsMediaPacketPreviewCallbackSupported == false)
            {
                Assert.Pass("MediaPacketPreviewCallback feature is not supported.");
            }

            using (var eventWaiter = EventAwaiter <MediaPacketPreviewEventArgs> .Create())
            {
                TestCamera.MediaPacketPreview += eventWaiter;

                TestCamera.StartPreview();

                var eventArgs = await eventWaiter.GetResultAsync();

                Assert.IsNotNull(eventArgs.Packet);
            }
        }
Beispiel #32
0
        public async Task StartCapture_CHANGE_STATUS()
        {
            TestCamera.StartPreview();

            using (var completeWaiter = EventAwaiter <CameraCapturingEventArgs> .Create())
                using (var tokenSource = new CancellationTokenSource())
                {
                    try
                    {
                        TestCamera.Capturing += completeWaiter;

                        TestCamera.StartCapture(10, 100, tokenSource.Token);

                        await completeWaiter.IsRaisedAsync();
                    }
                    catch (NotSupportedException)
                    {
                        if (TestCamera.Capabilities.IsContinuousCaptureSupported)
                        {
                            Assert.Fail("Continuous capture is failed.");
                        }
                        else
                        {
                            Assert.Pass("Continuous capture feature is not supported.");
                        }
                    }
                    catch (Exception ex)
                    {
                        Assert.Fail("Continuous capture is failed. Msg : " + ex.ToString());
                    }

                    /* TESTCODE */
                    using (var eventWaiter = EventAwaiter <CameraStateChangedEventArgs> .Create())
                    {
                        TestCamera.StateChanged += eventWaiter;

                        tokenSource.Cancel();

                        await eventWaiter.IsRaisedAsync();
                    }

                    Assert.That(TestCamera.State, Is.EqualTo(CameraState.Captured));
                }
        }
        public void SubscribeAll_TriggerWithSingleEvent()
        {
            EventAwaiter<LogsMonitorEventArgs> allAwaiter = new EventAwaiter<LogsMonitorEventArgs>();
            EventHandler<LogsMonitorEventArgs> allEventHandler = allAwaiter.GetEventHandler();
            System.SubscribeAllActive(allEventHandler);

            WriteToLogFile("_Event.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("_Event.2014-01-01.txt", "[00:00:12] Horses like this one have many uses.");

            allAwaiter.WaitInvocations(1);
            allAwaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                        args.CharacterName == TestGuyCharacterName
                        && args.WurmLogEntries.Any(
                            entry =>
                                entry.Content == "Horses like this one have many uses."
                                && entry.Timestamp == new DateTime(2014, 1, 1, 0, 0, 12)));
                return match1;
            });
        }
        public void Setup()
        {
            invoker = new PublicEventInvoker(new ThreadPoolMarshaller(logger), logger)
            {
                LoopDelayMillis = 1
            };

            eventAwaiter = new EventAwaiter<EventArgs>();
            Foovent += eventAwaiter.Handle;
        }
        public void SubscribeSingleLogType_TriggerWithSingleEvent()
        {
            EventAwaiter<LogsMonitorEventArgs> awaiter = new EventAwaiter<LogsMonitorEventArgs>();
            var handler = awaiter.GetEventHandler();
            System.Subscribe(TestGuyCharacterName, LogType.Event, handler);

            WriteToLogFile("_Event.2014-01-01.txt", "Logging started 2014-01-01");
            WriteToLogFile("_Event.2014-01-01.txt", "[00:00:12] Horses like this one have many uses.");

            awaiter.WaitInvocations(1);
            awaiter.WaitUntilMatch(list =>
            {
                var match1 = list.Any(
                    args =>
                        args.CharacterName == TestGuyCharacterName
                        && args.WurmLogEntries.Any(
                            entry =>
                                entry.Content == "Horses like this one have many uses."
                                && entry.Timestamp == new DateTime(2014,1,1, 0,0,12)));
                return match1;
            });

            System.Unsubscribe(TestGuyCharacterName, handler);

            WriteToLogFile("_Event.2014-01-01.txt", "[00:00:13] Horses like this one have many uses.");

            Thread.Sleep(1000);
            var unexpected = awaiter.Invocations.Any(
                args =>
                    args.WurmLogEntries.Any(
                        entry =>
                            entry.Timestamp == new DateTime(2014,1,1, 0,0,13)));

            Expect(unexpected, False);
        }
Beispiel #36
0
        public void TriggersEventOnChanged()
        {
            IWurmConfig config = System.GetConfig(configMock.Name);

            Expect(config.NoSkillMessageOnFavorChange, False);

            var configAwaiter = new EventAwaiter<EventArgs>();
            config.ConfigChanged += configAwaiter.Handle;

            configMock.GameSettings.ChangeValue("skillgain_no_favor", "true");

            awaiter.WaitInvocations(2, 10000);

            Expect(config.NoSkillMessageOnFavorChange, True);
        }