示例#1
0
        public void ConnectAndDisconnectFireAppropriateNumberOfTimes()
        {
            HandlerStub handlerStub = new HandlerStub();

            handlerStub.SetVirtualView(new Maui.Controls.Button());

            Assert.Equal(1, handlerStub.ConnectHandlerCount);
            Assert.Equal(0, handlerStub.DisconnectHandlerCount);

            handlerStub.SetVirtualView(new Maui.Controls.Button());
            handlerStub.SetVirtualView(new Maui.Controls.Button());
            handlerStub.SetVirtualView(new Maui.Controls.Button());
            Assert.Equal(1, handlerStub.ConnectHandlerCount);
            Assert.Equal(0, handlerStub.DisconnectHandlerCount);

            (handlerStub as IViewHandler).DisconnectHandler();
            Assert.Equal(1, handlerStub.ConnectHandlerCount);
            Assert.Equal(1, handlerStub.DisconnectHandlerCount);

            (handlerStub as IViewHandler).DisconnectHandler();
            Assert.Equal(1, handlerStub.ConnectHandlerCount);
            Assert.Equal(1, handlerStub.DisconnectHandlerCount);


            handlerStub.SetVirtualView(new Maui.Controls.Button());
            Assert.Equal(2, handlerStub.ConnectHandlerCount);
            Assert.Equal(1, handlerStub.DisconnectHandlerCount);
            (handlerStub as IViewHandler).DisconnectHandler();
            Assert.Equal(2, handlerStub.ConnectHandlerCount);
            Assert.Equal(2, handlerStub.DisconnectHandlerCount);
        }
示例#2
0
        public void SettingVirtualViewOnHandlerRemovesHandlerFromPreviousVirtualView()
        {
            HandlerStub handlerStub = new HandlerStub();
            var         button1     = new Maui.Controls.Button();
            var         button2     = new Maui.Controls.Button();

            handlerStub.SetVirtualView(button1);
            handlerStub.SetVirtualView(button2);

            Assert.Null(button1.Handler);
        }
示例#3
0
        public void CanUseFactoryForAlternateType()
        {
            HandlerStub.PlatformViewFactory = (h) => { return(new CustomNativeButton()); };

            HandlerStub handlerStub = new HandlerStub();

            handlerStub.SetVirtualView(new Maui.Controls.Button());

            Assert.True(handlerStub.PlatformView is CustomNativeButton);
        }
示例#4
0
        public void FactoryCanPuntAndUseOriginalType()
        {
            HandlerStub.PlatformViewFactory = (h) => { return(null); };

            HandlerStub handlerStub = new HandlerStub();

            handlerStub.SetVirtualView(new Maui.Controls.Button());

            Assert.NotNull(handlerStub.PlatformView);
            Assert.False(handlerStub.PlatformView is CustomNativeButton);
            Assert.True(handlerStub.PlatformView is object);
        }
示例#5
0
        public void ChainingToLessTypedParentWorks()
        {
            bool wasMapper1Called = false;
            bool wasMapper2Called = false;
            var  mapper1          = new PropertyMapper <IView, HandlerStub>
            {
                [nameof(IView.Background)] = (r, v) => wasMapper1Called = true
            };


            var mapper2 = new PropertyMapper <Button, HandlerStub>(mapper1)
            {
                [nameof(IView.Background)] = (r, v) => wasMapper2Called = true
            };

            HandlerStub handlerStub = new HandlerStub(mapper2);

            handlerStub.SetVirtualView(new ButtonStub());
            handlerStub.UpdateValue(nameof(IView.Background));

            Assert.True(wasMapper1Called);
            Assert.False(wasMapper2Called);
        }
示例#6
0
        public void FactoryCanCustomizeBasedOnVirtualView()
        {
            HandlerStub.PlatformViewFactory = (h) =>
            {
                if (h.VirtualView is CustomButton)
                {
                    return(new CustomNativeButton());
                }

                return(null);
            };

            HandlerStub handlerStub = new HandlerStub();

            handlerStub.SetVirtualView(new CustomButton());

            Assert.True(handlerStub.PlatformView is CustomNativeButton);

            HandlerStub handlerStub2 = new HandlerStub();

            handlerStub2.SetVirtualView(new Maui.Controls.Button());

            Assert.True(handlerStub2.PlatformView is object);
        }