Пример #1
0
        public async Task PercentValueInitializesCorrectly(double min, double max, double value)
        {
            var expectedValue   = Math.Clamp(value, min, max);
            var expectedPercent = (expectedValue - min) / (max - min);

            var slider = new SliderStub()
            {
                Maximum = max,
                Minimum = min,
                Value   = value
            };

            Assert.Equal(min, slider.Minimum);
            Assert.Equal(max, slider.Maximum);
            Assert.Equal(expectedValue, slider.Value);

            var native = await GetValueAsync(slider, (handler) =>
            {
                return(new
                {
                    Min = GetNativeMinimum(handler),
                    Max = GetNativeMaximum(handler),
                    Val = GetNativeProgress(handler),
                });
            });

            var nativePercent = (native.Val - native.Min) / (native.Max - native.Min);

            Assert.Equal(expectedPercent, nativePercent, 5);
        }
Пример #2
0
        public async Task InsertAddsChildToNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();
            var button = new ButtonStub();

            layout.Add(slider);

            var handler = await CreateHandlerAsync(layout);

            var children = await InvokeOnMainThreadAsync(() =>
            {
                return(GetNativeChildren(handler));
            });

            Assert.Equal(1, children.Count);
            Assert.Same(slider.Handler.NativeView, children[0]);

            children = await InvokeOnMainThreadAsync(() =>
            {
                handler.Insert(0, button);
                return(GetNativeChildren(handler));
            });

            Assert.Equal(2, children.Count);
            Assert.Same(button.Handler.NativeView, children[0]);
            Assert.Same(slider.Handler.NativeView, children[1]);
        }
Пример #3
0
        public async Task HandlerRemovesChildFromNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();

            layout.Add(slider);

            var handler = await CreateHandlerAsync(layout);

            var children = await InvokeOnMainThreadAsync(() =>
            {
                return(GetNativeChildren(handler));
            });

            Assert.Equal(1, children.Count);
            Assert.Same(slider.Handler.NativeView, children[0]);

            var count = await InvokeOnMainThreadAsync(() =>
            {
                handler.Remove(slider);
                return(GetNativeChildCount(handler));
            });

            Assert.Equal(0, count);
        }
Пример #4
0
        public async Task ClearRemovesChildrenFromNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();
            var button = new ButtonStub();

            layout.Add(slider);
            layout.Add(button);

            var handler = await CreateHandlerAsync(layout);

            var children = await InvokeOnMainThreadAsync(() =>
            {
                return(GetNativeChildren(handler));
            });

            Assert.Equal(2, children.Count);
            Assert.Same(slider.Handler.PlatformView, children[0]);
            Assert.Same(button.Handler.PlatformView, children[1]);

            var count = await InvokeOnMainThreadAsync(() =>
            {
                handler.Clear();
                return(GetNativeChildCount(handler));
            });

            Assert.Equal(0, count);
        }
Пример #5
0
        public async Task UpdateNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();
            var button = new ButtonStub();

            layout.Add(slider);

            var handler = await CreateHandlerAsync(layout);

            var children = await InvokeOnMainThreadAsync(() =>
            {
                return(GetNativeChildren(handler));
            });

            Assert.Equal(1, children.Count);
            Assert.Same(slider.Handler.PlatformView, children[0]);

            children = await InvokeOnMainThreadAsync(() =>
            {
                layout[0] = button;
                handler.Update(0, button);
                return(GetNativeChildren(handler));
            });

            Assert.Equal(1, children.Count);
            Assert.Same(button.Handler.PlatformView, children[0]);
        }
Пример #6
0
        public async Task ThumbColorInitializesCorrectly()
        {
            var slider = new SliderStub()
            {
                ThumbColor = Color.Purple
            };

            await ValidateNativeThumbColor(slider, Color.Purple);
        }
Пример #7
0
        public async Task MaximumInitializesCorrectly()
        {
            var slider = new SliderStub()
            {
                Maximum = 1
            };

            await ValidatePropertyInitValue(slider, () => slider.Maximum, GetNativeMaximum, 1);
        }
Пример #8
0
        public async Task NativeMeasurementFiniteGivenInfiniteConstraints()
        {
            var slider = new SliderStub();

            var size = await GetValueAsync(slider, (h) => h.GetDesiredSize(double.PositiveInfinity, double.PositiveInfinity));

            Assert.False(double.IsInfinity(size.Width));
            Assert.False(double.IsInfinity(size.Height));
        }
Пример #9
0
        public async Task ValueInitializesCorrectly()
        {
            var slider = new SliderStub()
            {
                Maximum = 1,
                Minimum = 0,
                Value   = 0.5
            };

            await ValidatePropertyInitValue(slider, () => slider.Value, GetNativeProgress, slider.Value);
        }
Пример #10
0
        public async Task ContentInitializes()
        {
            var slider = new SliderStub();
            var page   = new PageStub
            {
                Content = slider
            };

            await CreateHandlerAsync(page);

            Assert.Equal(slider.Handler.NativeView, GetNativePageContent(page));
        }
Пример #11
0
        public async Task HandlerRemovesChildFromNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();

            layout.Add(slider);

            var handler = await CreateHandlerAsync(layout);

            handler.Remove(slider);
            Assert.Equal(0, GetNativeChildCount(handler));
        }
Пример #12
0
        public async Task ContentUpdates()
        {
            var slider = new SliderStub();
            var page   = new PageStub
            {
                Content = new SliderStub()
            };

            await CreateHandlerAsync(page);
            await InvokeOnMainThreadAsync(() => page.Content = slider);

            Assert.Equal(slider.Handler.NativeView, GetNativePageContent(page));
        }
Пример #13
0
        public async Task ThumbImageSourceInitializesCorrectly()
        {
            var slider = new SliderStub()
            {
                ThumbImageSource = new FileImageSourceStub("red.png")
            };

            await InvokeOnMainThreadAsync(async() =>
            {
                var handler = CreateHandler <SliderHandler>(slider);
                await Task.Delay(1000);
                await handler.NativeView.AssertContainsColor(Colors.Red);
            });
        }
Пример #14
0
        public async Task DisconnectHandlerRemovesChildFromNativeLayout()
        {
            var layout = new LayoutStub();
            var slider = new SliderStub();

            layout.Add(slider);

            var handler = await CreateHandlerAsync(layout);

            var count = await InvokeOnMainThreadAsync(() =>
            {
                layout.Handler.DisconnectHandler();
                return(GetNativeChildCount(handler));
            });

            Assert.Equal(0, count);
        }
Пример #15
0
        public async Task ContentInitializes()
        {
            var slider = new SliderStub();
            var page   = new PageStub
            {
                Content = slider
            };

            await InvokeOnMainThreadAsync(() =>
            {
                var handler = CreateHandler(page);

                var nativeView = GetNativePageContent(handler);

                Assert.Equal(slider.Handler.NativeView, nativeView);
            });
        }
Пример #16
0
        public async Task ContentUpdates()
        {
            var slider = new SliderStub();
            var page   = new PageStub
            {
                Content = new ButtonStub()
            };

            await InvokeOnMainThreadAsync(() =>
            {
                var handler = CreateHandler(page);

                page.Content = slider;

                var platformView = GetNativePageContent(handler);

                Assert.Equal(slider.Handler.PlatformView, platformView);
            });
        }
Пример #17
0
        public async Task MeasureMatchesExplicitValues()
        {
            var layout = new LayoutStub();

            var content = new SliderStub
            {
                DesiredSize = new Size(50, 50)
            };

            layout.Add(content);
            layout.Width  = 100;
            layout.Height = 150;

            var contentViewHandler = await CreateHandlerAsync(layout);

            var measure = await InvokeOnMainThreadAsync(() => layout.Measure(double.PositiveInfinity, double.PositiveInfinity));

            Assert.Equal(layout.Width, measure.Width, 0);
            Assert.Equal(layout.Height, measure.Height, 0);
        }
Пример #18
0
        public async Task RespectsMinimumValues()
        {
            var cv = new ContentViewStub();

            var content = new SliderStub
            {
                DesiredSize = new Size(50, 50)
            };

            cv.Content       = content;
            cv.MinimumWidth  = 100;
            cv.MinimumHeight = 150;

            var contentViewHandler = await CreateHandlerAsync(cv);

            var measure = await InvokeOnMainThreadAsync(() => cv.Measure(double.PositiveInfinity, double.PositiveInfinity));

            Assert.Equal(cv.MinimumWidth, measure.Width, 0);
            Assert.Equal(cv.MinimumHeight, measure.Height, 0);
        }
Пример #19
0
        public async Task MaximumInitializesCorrectly()
        {
            var xplatMaximum = 1;
            var slider       = new SliderStub()
            {
                Maximum = xplatMaximum
            };

            double expectedValue = SliderExtensions.NativeMaxValue;

            var values = await GetValueAsync(slider, (handler) =>
            {
                return(new
                {
                    ViewValue = slider.Maximum,
                    NativeViewValue = GetNativeMaximum(handler)
                });
            });

            Assert.Equal(xplatMaximum, values.ViewValue);
            Assert.Equal(expectedValue, values.NativeViewValue);
        }
Пример #20
0
        public async Task ValueInitializesCorrectly()
        {
            var xplatValue = 0.5;
            var slider     = new SliderStub()
            {
                Maximum = 1,
                Minimum = 0,
                Value   = xplatValue
            };

            int expectedValue = (int)(SliderExtensions.NativeMaxValue / 2);

            var values = await GetValueAsync(slider, (handler) =>
            {
                return(new
                {
                    ViewValue = slider.Value,
                    NativeViewValue = GetNativeProgress(handler)
                });
            });

            Assert.Equal(xplatValue, values.ViewValue);
            Assert.Equal(expectedValue, values.NativeViewValue);
        }