Example #1
0
        public void ArrangeWhenMeasureChangedTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                TestElement element = new TestElement
                {
                    MeasureSize = new Size(100, 100),
                    ArrangeSize = new Size(100, 100),
                };

                element.IsRootElement = true;

                element.Measure(new Size(100, 100));
                element.Arrange(new Rect(0, 0, 100, 100));
                Assert.AreEqual(1, element.MeasureCount);
                Assert.AreEqual(1, element.ArrangeCount);

                element.InvalidateMeasure();
                scheduler.ProcessDueOperations();
                Assert.AreEqual(2, element.MeasureCount);
                Assert.AreEqual(1, element.ArrangeCount);

                element.MeasureSize = new Size(150, 150);
                element.InvalidateMeasure();
                scheduler.ProcessDueOperations();
                Assert.AreEqual(3, element.MeasureCount);
                Assert.AreEqual(2, element.ArrangeCount);
            }
        }
Example #2
0
        public void MeasureVisibleOnlyTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                TestElement child = new TestElement();

                TestContainer parent = new TestContainer();
                parent.Child = child;

                parent.InvalidateMeasure();
                parent.InvalidateArrange();
                child.InvalidateMeasure();
                child.InvalidateArrange();

                scheduler.ProcessDueOperations();

                Assert.AreEqual(0, parent.MeasureCount);
                Assert.AreEqual(0, parent.ArrangeCount);
                Assert.AreEqual(0, child.MeasureCount);
                Assert.AreEqual(0, child.ArrangeCount);

                Assert.IsFalse(parent.IsMeasureValid);
                Assert.IsFalse(parent.IsArrangeValid);
                Assert.IsFalse(child.IsMeasureValid);
                Assert.IsFalse(child.IsArrangeValid);
            }
        }
Example #3
0
        public void MeasureParentOnceTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                TestContainer parent = new TestContainer();

                TestElement child = new TestElement
                {
                    MeasureSize = new Size(100, 100),
                    ArrangeSize = new Size(100, 100),
                };

                parent.IsRootElement = true;
                parent.Child         = child;

                parent.Measure(new Size(100, 100));
                parent.Arrange(new Rect(0, 0, 200, 200));

                scheduler.ProcessDueOperations();

                Assert.AreEqual(1, parent.MeasureCount);
                Assert.AreEqual(1, parent.ArrangeCount);
                Assert.AreEqual(1, child.MeasureCount);
                Assert.AreEqual(1, child.ArrangeCount);

                Assert.IsTrue(parent.IsMeasureValid);
                Assert.IsTrue(parent.IsArrangeValid);
                Assert.IsTrue(child.IsMeasureValid);
                Assert.IsTrue(child.IsArrangeValid);
            }
        }
        public void TaskToObservable_NonVoid_Complete_BeforeSubscribe()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory   = new TaskFactory(taskScheduler);
            var res           = default(ITestableObserver <int>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource <int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(110, () => taskSource.SetResult(42));

                res = scheduler.Start(() =>
                                      taskSource.Task.ToObservable()
                                      );
            });

            res.Messages.AssertEqual(
                OnNext(200, 42),
                OnCompleted <int>(200)
                );
        }
Example #5
0
        public void DeserializesRecord()
        {
            const string lex = @"
                timestamp   [0-9]{2}[.][0-9]{2}[.][0-9]{4}[T][0-9]{2}[:][0-9]{2}[:][0-9]{2}
                level       TRACE|DEBUG|INFO|WARN|ERROR|FATAL
                message     [^\r\n]+

                %x matched_level
                %%

                <INITIAL,matched_level> {
                    {timestamp} { this.Timestamp = TextAsTimestamp(""MM.dd.yyyyTHH:mm:ss""); BEGIN(INITIAL); }
                    {level} { this.Level = yytext; BEGIN(matched_level); }
                }
                <matched_level>{message} { this.Message = yytext; BEGIN(INITIAL); }
                ";

            var compiler = new LexCompiler {Diagnostics = Console.Out};
            var scanners = compiler.Compile("%%", lex);
            var taskScheduler = new TestTaskScheduler();

            var format = new LexLogFormat {
                RecordsScannerType = scanners.RecordsScannerType,
                TaskScheduler = taskScheduler
            };

            var record = format.DeserializeRecord(
                new ArraySegment<byte>(Encoding.UTF8.GetBytes("01.01.2012T15:41:23 DEBUG Hello world!\r\n")));

            taskScheduler.ExecuteAll();

            Assert.Equal(LogLevel.Debug, record.Level);
            Assert.Equal(" Hello world!", record.Message);
        }
Example #6
0
        public void can_calculate_the_hit_ratio_as_a_guage_with_one_min_rate_as_default()
        {
            var clock     = new TestClock();
            var scheduler = new TestTaskScheduler(clock);

            var cacheHitMeter = new DefaultMeterMetric(clock, scheduler);
            var dbQueryTimer  = new DefaultTimerMetric(new DefaultAlgorithmRReservoir(1028), clock);

            foreach (var index in Enumerable.Range(0, 1000))
            {
                using (dbQueryTimer.NewContext())
                {
                    clock.Advance(TimeUnit.Milliseconds, 100);
                }

                if (index % 2 == 0)
                {
                    cacheHitMeter.Mark();
                }
            }

            var cacheHitRatioGauge = new HitRatioGauge(cacheHitMeter, dbQueryTimer);

            cacheHitRatioGauge.Value.Should().BeGreaterThan(0.0);
        }
        public void TaskToObservable_Void_Exception_BeforeDispose()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory   = new TaskFactory(taskScheduler);
            var res           = default(ITestableObserver <Unit>);

            var ex = new Exception();

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource <int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(300, () => taskSource.SetException(ex));

                res = scheduler.Start(() =>
                                      ((Task)taskSource.Task).ToObservable()
                                      );
            });

            res.Messages.AssertEqual(
                OnError <Unit>(300, ex)
                );
        }
        public void TaskToObservable_NonVoid_Complete_BeforeSubscribe()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory = new TaskFactory(taskScheduler);
            var res = default(ITestableObserver<int>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource<int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(110, () => taskSource.SetResult(42));

                res = scheduler.Start(() =>
                    taskSource.Task.ToObservable()
                );
            });

            res.Messages.AssertEqual(
                OnNext(200, 42),
                OnCompleted<int>(200)
            );
        }
Example #9
0
        public void MeasureInvisibleOnceOnlyTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                TestElement child = new TestElement {
                    MeasureSize = new Size(100, 100), ArrangeSize = new Size(100, 100)
                };

                TestContainer parent = new TestContainer {
                    IsRootElement = true
                };
                parent.Child = child;

                parent.Measure(Size.Infinity);
                parent.Arrange(new Rect(parent.DesiredSize));

                Assert.AreEqual(1, parent.MeasureCount);
                Assert.AreEqual(1, parent.ArrangeCount);
                Assert.AreEqual(1, child.MeasureCount);
                Assert.AreEqual(1, child.ArrangeCount);
                Assert.AreEqual(new Size(100, 100), child.DesiredSize);
                Assert.AreEqual(new Size(100, 100), parent.DesiredSize);

                child.Visibility = Visibility.Collapsed;

                scheduler.ProcessDueOperations();

                Assert.AreEqual(2, parent.MeasureCount);
                Assert.AreEqual(2, parent.ArrangeCount);
                Assert.AreEqual(1, child.MeasureCount);
                Assert.AreEqual(1, child.ArrangeCount);
                Assert.AreEqual(Size.Zero, child.DesiredSize);
                Assert.AreEqual(Size.Zero, parent.DesiredSize);

                child.InvalidateMeasure();
                child.InvalidateArrange();

                scheduler.ProcessDueOperations();

                Assert.AreEqual(2, parent.MeasureCount);
                Assert.AreEqual(2, parent.ArrangeCount);
                Assert.AreEqual(1, child.MeasureCount);
                Assert.AreEqual(1, child.ArrangeCount);

                parent.InvalidateMeasure();
                parent.InvalidateArrange();

                scheduler.ProcessDueOperations();

                Assert.AreEqual(3, parent.MeasureCount);
                Assert.AreEqual(3, parent.ArrangeCount);
                Assert.AreEqual(1, child.MeasureCount);
                Assert.AreEqual(1, child.ArrangeCount);
            }
        }
Example #10
0
        public void ReadsSegments()
        {
            var stream = CreateStream("01.01.2012T15:41:23 DEBUG Hello world!\r\n02.01.2012T10:23:03 WARN Bye bye!");

            const string lex = @"
                start   [0-9]{2}[.][0-9]{2}[.][0-9]{4}[T][0-9]{2}[:][0-9]{2}[:][0-9]{2}
                end     \r\n
                %%
                {start} BeginSegment();
                {end} EndSegment();
                <<EOF>> EndSegment();
                ";

            var compiler = new LexCompiler {
                Diagnostics = Console.Out
            };

            var scanners = compiler.Compile(lex, "%%");

            Assert.True(scanners.Success);

            var taskScheduler = new TestTaskScheduler();

            var format = new LexLogFormat {
                SegmentsScannerType = scanners.SegmentsScannerType,
                Diagnostics         = Console.Out,
                TaskScheduler       = taskScheduler
            };

            var segments = new List <RecordSegment>();
            var subject  = new Subject <RecordSegment>();

            subject.Subscribe(segments.Add);

            format.ReadSegments(subject, stream, CancellationToken.None);

            taskScheduler.ExecuteAll();

            var segment = segments.FirstOrDefault();

            Assert.NotNull(segment);

            stream.Position = segment.Offset;

            var buffer = new byte[segment.Length];

            stream.Read(buffer, 0, buffer.Length);

            var str = Encoding.UTF8.GetString(buffer);

            Assert.Equal("01.01.2012T15:41:23 DEBUG Hello world!", str);
        }
Example #11
0
        public void ReadsSegments()
        {
            var stream = CreateStream("01.01.2012T15:41:23 DEBUG Hello world!\r\n02.01.2012T10:23:03 WARN Bye bye!");

            const string lex = @"
                start   [0-9]{2}[.][0-9]{2}[.][0-9]{4}[T][0-9]{2}[:][0-9]{2}[:][0-9]{2}
                end     \r\n
                %%
                {start} BeginSegment();
                {end} EndSegment();
                <<EOF>> EndSegment();
                ";

            var compiler = new LexCompiler {Diagnostics = Console.Out};

            var scanners = compiler.Compile(lex, "%%");

            Assert.True(scanners.Success);

            var taskScheduler = new TestTaskScheduler();

            var format = new LexLogFormat {
                SegmentsScannerType = scanners.SegmentsScannerType,
                Diagnostics = Console.Out,
                TaskScheduler = taskScheduler
            };

            var segments = new List<RecordSegment>();
            var subject = new Subject<RecordSegment>();

            subject.Subscribe(segments.Add);

            format.ReadSegments(subject, stream, CancellationToken.None);

            taskScheduler.ExecuteAll();

            var segment = segments.FirstOrDefault();

            Assert.NotNull(segment);

            stream.Position = segment.Offset;

            var buffer = new byte[segment.Length];

            stream.Read(buffer, 0, buffer.Length);

            var str = Encoding.UTF8.GetString(buffer);

            Assert.Equal("01.01.2012T15:41:23 DEBUG Hello world!", str);
        }
Example #12
0
        public void SetTaskSchedulerAndExecuteEntryTest()
        {
            var sched = new TestTaskScheduler();

            int        val = 0;
            AtomicBool taskSchedullerSetted = new AtomicBool(false);

            Task tsk = null;

            tsk = new Task(() =>
            {
                taskSchedullerSetted.Value = TaskScheduler.Current == sched;
                Interlocked.Increment(ref val);
            });

            TaskHelper.SetTaskScheduler(tsk, sched);
            TaskHelper.ExecuteTaskEntry(tsk);

            TimingAssert.IsTrue(10000, taskSchedullerSetted, "taskSchedullerSetted");
        }
Example #13
0
        public void LayoutInvalidationTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                UIElement root = new UIElement {
                    IsRootElement = true
                };
                UIElement child = new UIElement();

                root.Measure(Size.Infinity);
                root.Arrange(new Rect(root.DesiredSize));

                Assert.IsTrue(root.IsMeasureValid);
                Assert.IsTrue(root.IsArrangeValid);

                root.AddVisualChild(child);

                Assert.IsFalse(root.IsMeasureValid);
                Assert.IsTrue(root.IsArrangeValid);

                scheduler.ProcessDueOperations();

                Assert.IsTrue(root.IsMeasureValid);
                Assert.IsTrue(root.IsArrangeValid);

                root.RemoveVisualChild(child);

                Assert.IsFalse(root.IsMeasureValid);
                Assert.IsTrue(root.IsArrangeValid);

                scheduler.ProcessDueOperations();

                Assert.IsTrue(root.IsMeasureValid);
                Assert.IsTrue(root.IsArrangeValid);
            }
        }
        public void TaskToObservable_NonVoid_Canceled_AfterDispose()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory   = new TaskFactory(taskScheduler);
            var res           = default(ITestableObserver <int>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource <int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(1100, () => taskSource.SetCanceled());

                res = scheduler.Start(() =>
                                      taskSource.Task.ToObservable()
                                      );
            });

            res.Messages.AssertEqual(
                );
        }
        public void TaskToObservable_Void_Canceled_BeforeSubscribe()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory   = new TaskFactory(taskScheduler);
            var res           = default(ITestableObserver <Unit>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource <int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(110, () => taskSource.SetCanceled());

                res = scheduler.Start(() =>
                                      ((Task)taskSource.Task).ToObservable()
                                      );
            });

            res.Messages.AssertEqual(
                OnError <Unit>(200, ex => ex is TaskCanceledException)
                );
        }
Example #16
0
        public void DeserializesRecord()
        {
            const string lex = @"
                timestamp   [0-9]{2}[.][0-9]{2}[.][0-9]{4}[T][0-9]{2}[:][0-9]{2}[:][0-9]{2}
                level       TRACE|DEBUG|INFO|WARN|ERROR|FATAL
                message     [^\r\n]+

                %x matched_level
                %%

                <INITIAL,matched_level> {
                    {timestamp} { this.Timestamp = TextAsTimestamp(""MM.dd.yyyyTHH:mm:ss""); BEGIN(INITIAL); }
                    {level} { this.Level = yytext; BEGIN(matched_level); }
                }
                <matched_level>{message} { this.Message = yytext; BEGIN(INITIAL); }
                ";

            var compiler = new LexCompiler {
                Diagnostics = Console.Out
            };
            var scanners      = compiler.Compile("%%", lex);
            var taskScheduler = new TestTaskScheduler();

            var format = new LexLogFormat {
                RecordsScannerType = scanners.RecordsScannerType,
                TaskScheduler      = taskScheduler
            };

            var record = format.DeserializeRecord(
                new ArraySegment <byte>(Encoding.UTF8.GetBytes("01.01.2012T15:41:23 DEBUG Hello world!\r\n")));

            taskScheduler.ExecuteAll();

            Assert.Equal(LogLevel.Debug, record.Level);
            Assert.Equal(" Hello world!", record.Message);
        }
Example #17
0
 public TestApplicationHost()
 {
     TaskScheduler          = new TestTaskScheduler();
     TextMeasurementService = new TestTextMeasurementService();
 }
 public TestApplicationHost()
 {
     TaskScheduler            = new TestTaskScheduler();
     TextMeasurementService   = new TestTextMeasurementService();
     RenderImageSourceFactory = new TestRenderImageSourceFactory();
 }
 internal TestScheduler(int threadCount = 1)
 {
     _taskScheduler = new TestTaskScheduler(threadCount);
     TaskHelper     = new TestTaskHelper(this);
 }
Example #20
0
 public TestTime(int threadCount = 1, Instant?startInstant = null)
 {
     _fakeClock     = new FakeClock(startInstant ?? Instant.FromUtc(2000, 1, 1, 0, 0));
     _taskScheduler = new TestTaskScheduler(threadCount);
     TaskHelper     = new TestTaskHelper(this);
 }
Example #21
0
        public void ArrangeCoreTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                LayoutTestElement element = new LayoutTestElement {
                    IsRootElement = true, MeasureSize = new Size(200, 100)
                };

                element.Arrange(new Rect(100, 50));
                Assert.AreEqual(1, element.MeasureCount);
                Assert.AreEqual(1, element.ArrangeCount);
                Assert.AreEqual(new Size(100, 50), element.PreviousAvailableSize);
                Assert.AreEqual(new Size(100, 50), element.VisualSize);
                Assert.AreEqual(new Point(0, 0), element.VisualOffset);
                Assert.AreEqual(100, element.ActualWidth);
                Assert.AreEqual(50, element.ActualHeight);

                element.Width  = 200;
                element.Height = 100;
                element.Arrange(new Rect(100, 50));
                Assert.AreEqual(2, element.MeasureCount);
                Assert.AreEqual(2, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(-50, -25), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.Width  = Double.NaN;
                element.Height = Double.NaN;
                element.Arrange(new Rect(200, 100));
                Assert.AreEqual(3, element.MeasureCount);
                Assert.AreEqual(3, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.PreviousAvailableSize);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(0, 0), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Left;
                element.VerticalAlignment   = VerticalAlignment.Top;
                element.Arrange(new Rect(300, 200));
                Assert.AreEqual(4, element.MeasureCount);
                Assert.AreEqual(4, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(0, 0), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Center;
                element.VerticalAlignment   = VerticalAlignment.Bottom;
                element.Arrange(new Rect(300, 200));
                Assert.AreEqual(5, element.MeasureCount);
                Assert.AreEqual(5, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(50, 100), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Right;
                element.VerticalAlignment   = VerticalAlignment.Center;
                element.Arrange(new Rect(300, 200));
                Assert.AreEqual(6, element.MeasureCount);
                Assert.AreEqual(6, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(100, 50), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Stretch;
                element.VerticalAlignment   = VerticalAlignment.Stretch;
                element.Arrange(new Rect(300, 200));
                Assert.AreEqual(7, element.MeasureCount);
                Assert.AreEqual(7, element.ArrangeCount);
                Assert.AreEqual(new Size(300, 200), element.VisualSize);
                Assert.AreEqual(new Point(0, 0), element.VisualOffset);
                Assert.AreEqual(300, element.ActualWidth);
                Assert.AreEqual(200, element.ActualHeight);

                element.ArrangeSize = new Size(200, 100);
                element.InvalidateArrange();
                element.Arrange(new Rect(300, 200));
                Assert.AreEqual(7, element.MeasureCount);
                Assert.AreEqual(8, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(50, 50), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);
            }
        }
        public void TaskToObservable_Void_Canceled_AfterDispose()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory = new TaskFactory(taskScheduler);
            var res = default(ITestableObserver<Unit>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource<int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(1100, () => taskSource.SetCanceled());

                res = scheduler.Start(() =>
                    ((Task)taskSource.Task).ToObservable()
                );
            });

            res.Messages.AssertEqual(
            );
        }
        public void TaskToObservable_Void_Exception_BeforeSubscribe()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory = new TaskFactory(taskScheduler);
            var res = default(ITestableObserver<Unit>);

            var ex = new Exception();

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource<int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(110, () => taskSource.SetException(ex));

                res = scheduler.Start(() =>
                    ((Task)taskSource.Task).ToObservable()
                );
            });

            res.Messages.AssertEqual(
                OnError<Unit>(200, ex)
            );
        }
Example #24
0
        public void ArrangeCoreMarginTest()
        {
            TestTaskScheduler scheduler = (TestTaskScheduler)ApplicationHost.Current.TaskScheduler;

            using (scheduler.DisableImmediateProcessing())
            {
                LayoutTestElement element = new LayoutTestElement {
                    MeasureSize = new Size(200, 100), Margin = new Thickness(10, 20, 30, 40)
                };

                element.Arrange(new Rect(200, 100));
                Assert.AreEqual(1, element.MeasureCount);
                Assert.AreEqual(1, element.ArrangeCount);
                Assert.AreEqual(new Size(160, 40), element.VisualSize);
                Assert.AreEqual(new Point(10, 20), element.VisualOffset);
                Assert.AreEqual(160, element.ActualWidth);
                Assert.AreEqual(40, element.ActualHeight);

                element.Width  = 200;
                element.Height = 100;
                element.Arrange(new Rect(200, 100));
                Assert.AreEqual(2, element.MeasureCount);
                Assert.AreEqual(2, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(-10, -10), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.Width  = Double.NaN;
                element.Height = Double.NaN;
                element.Arrange(new Rect(240, 160));
                Assert.AreEqual(3, element.MeasureCount);
                Assert.AreEqual(3, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(10, 20), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Left;
                element.VerticalAlignment   = VerticalAlignment.Top;
                element.Arrange(new Rect(340, 260));
                Assert.AreEqual(4, element.MeasureCount);
                Assert.AreEqual(4, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(10, 20), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Center;
                element.VerticalAlignment   = VerticalAlignment.Bottom;
                element.Arrange(new Rect(340, 260));
                Assert.AreEqual(5, element.MeasureCount);
                Assert.AreEqual(5, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(60, 120), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Right;
                element.VerticalAlignment   = VerticalAlignment.Center;
                element.Arrange(new Rect(340, 260));
                Assert.AreEqual(6, element.MeasureCount);
                Assert.AreEqual(6, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(110, 70), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);

                element.HorizontalAlignment = HorizontalAlignment.Stretch;
                element.VerticalAlignment   = VerticalAlignment.Stretch;
                element.Arrange(new Rect(340, 260));
                Assert.AreEqual(7, element.MeasureCount);
                Assert.AreEqual(7, element.ArrangeCount);
                Assert.AreEqual(new Size(300, 200), element.VisualSize);
                Assert.AreEqual(new Point(10, 20), element.VisualOffset);
                Assert.AreEqual(300, element.ActualWidth);
                Assert.AreEqual(200, element.ActualHeight);

                element.ArrangeSize = new Size(200, 100);
                element.InvalidateArrange();
                element.Arrange(new Rect(340, 260));
                Assert.AreEqual(7, element.MeasureCount);
                Assert.AreEqual(8, element.ArrangeCount);
                Assert.AreEqual(new Size(200, 100), element.VisualSize);
                Assert.AreEqual(new Point(60, 70), element.VisualOffset);
                Assert.AreEqual(200, element.ActualWidth);
                Assert.AreEqual(100, element.ActualHeight);
            }
        }
Example #25
0
        public MeterMetricTests()
        {
            var scheduler = new TestTaskScheduler(_clock);

            _meter = new MeterMetric(_clock, scheduler);
        }
        public void TaskToObservable_NonVoid_Canceled_BeforeDispose()
        {
            var taskScheduler = new TestTaskScheduler();
            var taskFactory = new TaskFactory(taskScheduler);
            var res = default(ITestableObserver<int>);

            taskFactory.StartNew(() =>
            {
                var scheduler = new TestScheduler();

                var taskSource = new TaskCompletionSource<int>();
                taskSource.Task.ContinueWith(t => { var e = t.Exception; });

                scheduler.ScheduleAbsolute(300, () => taskSource.SetCanceled());

                res = scheduler.Start(() =>
                    taskSource.Task.ToObservable()
                );
            });

            res.Messages.AssertEqual(
                OnError<int>(300, ex => ex is TaskCanceledException)
            );
        }