예제 #1
0
        public void PassesConfiguredEventSenderToEventHandler()
        {
            var gotSender = new EventSink <object>();

            myEvent += (sender, args) => gotSender.Enqueue(sender);

            executor.ScheduleEvent("hello", myEvent);

            Assert.Equal(MyEventSender, gotSender.ExpectValue());
        }
예제 #2
0
        public void EventHandlerIsCalledOnUIThread()
        {
            var td     = TestData.DataSource();
            var config = BasicConfig().DataSource(td).Build();

            var captureMainThread = new EventSink <Thread>();

            NSRunLoop.Main.BeginInvokeOnMainThread(() => captureMainThread.Enqueue(Thread.CurrentThread));
            var mainThread = captureMainThread.ExpectValue();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                var receivedOnThread = new EventSink <Thread>();
                client.FlagTracker.FlagValueChanged += (sender, args) =>
                                                       receivedOnThread.Enqueue(Thread.CurrentThread);

                td.Update(td.Flag("flagkey").Variation(true));

                var t = receivedOnThread.ExpectValue();
                Assert.Equal(mainThread, t);
            }
        }
        public void EventSenderIsClientInstance()
        {
            // We're only checking one kind of events here (FlagValueChanged), but since the SDK uses the
            // same TaskExecutor instance for all event dispatches and the sender is configured in
            // that object, the sender should be the same for all events.

            var flagKey  = "flagKey";
            var testData = TestData.DataSource();

            testData.Update(testData.Flag(flagKey).Variation(true));
            var config = BasicConfig().DataSource(testData).Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                var receivedSender = new EventSink <object>();
                client.FlagTracker.FlagValueChanged += (s, e) => receivedSender.Enqueue(s);

                testData.Update(testData.Flag(flagKey).Variation(false));

                var sender = receivedSender.ExpectValue();
                Assert.Same(client, sender);
            }
        }
예제 #4
0
 public void AddStreamInit(DateTime timestamp, TimeSpan duration, bool failed) =>
 StreamInits.Enqueue(new StreamInit {
     Timestamp = timestamp, Duration = duration, Failed = failed
 });
예제 #5
0
 public void Init(User user, FullDataSet data) =>
 Actions.Enqueue(new ReceivedInit {
     Data = data, User = user
 });
 protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
 {
     Requests.Enqueue(request);
     return(Task.FromResult(new HttpResponseMessage((HttpStatusCode)_statusCode)));
 }