예제 #1
0
        public async Task MetroAnimatedTabControlShouldSelectTheCorrectTemplate()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <AnimatedTabControlWindow>().ConfigureAwait(false);

            var templateSelector = window.TryFindResource("TabControlContentTemplateSelector") as TabControlContentTemplateSelector;

            Assert.NotNull(templateSelector);

            var tabControl = window.MetroTabControl2;

            Assert.Equal(2, tabControl.Items.Count);

            var tabItem          = ((TabItem)tabControl.ItemContainerGenerator.ContainerFromIndex(0));
            var contentPresenter = tabControl.FindChild <ContentPresenter>("PART_SelectedContentHost");

            contentPresenter.ApplyTemplate();
            var textBlock = contentPresenter.FindChild <TextBlock>(null);

            Assert.Equal(((FirstViewModel)tabItem.Content).Name, textBlock.Text);

            tabItem = ((TabItem)tabControl.ItemContainerGenerator.ContainerFromIndex(1));
            window.Invoke(() => tabItem.IsSelected = true);
            contentPresenter = tabControl.FindChild <ContentPresenter>("PART_SelectedContentHost");
            contentPresenter.ApplyTemplate();
            textBlock = contentPresenter.FindChild <TextBlock>(null);
            Assert.Equal(((SecondViewModel)tabItem.Content).Name, textBlock.Text);
        }
예제 #2
0
        public async Task TestTitleCharacterCasingProperty()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>(w => w.Title = "Test");

            var titleBar        = window.FindChild <ContentControl>("PART_TitleBar");
            var titleBarContent = titleBar.FindChild <ContentPresenter>("PART_ContentPresenter");

            var be = BindingOperations.GetBindingExpression(titleBarContent, ContentControl.ContentProperty);

            Assert.NotNull(be);
            be.UpdateTarget();

            // default should be UPPER
            Assert.Equal(CharacterCasing.Upper, window.TitleCharacterCasing);
            Assert.Equal("TEST", titleBarContent.Content);

            window.TitleCharacterCasing = CharacterCasing.Lower;
            be.UpdateTarget();
            Assert.Equal("test", titleBarContent.Content);

            window.TitleCharacterCasing = CharacterCasing.Normal;
            be.UpdateTarget();
            Assert.Equal("Test", titleBarContent.Content);
        }
예제 #3
0
        public async Task ShouldConvertTextInput()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <NumericUpDownWindow>().ConfigureAwait(false);

            await TestHost.SwitchToAppThread();

            var textBox = window.TheNUD.FindChild <TextBox>(string.Empty);

            Assert.NotNull(textBox);

            window.TheNUD.NumericInputMode = NumericInput.All;

            SetText(textBox, "42");
            Assert.Equal(42d, window.TheNUD.Value);

            SetText(textBox, "42.2");
            Assert.Equal(42.2d, window.TheNUD.Value);

            SetText(textBox, ".");
            Assert.Equal(0d, window.TheNUD.Value);

            SetText(textBox, ".9");
            Assert.Equal(0.9d, window.TheNUD.Value);

            SetText(textBox, ".0115");
            Assert.Equal(0.0115d, window.TheNUD.Value);
        }
예제 #4
0
        public async Task ReceivesDataContext()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <DialogWindow>();

            var vm     = new TheViewModel();
            var dialog = (CustomDialog)window.Resources["CustomDialog"];

            await window.ShowMetroDialogAsync(dialog);

            await TestHost.SwitchToAppThread(); // No idea why we have to do this again

            Assert.Equal(await window.GetCurrentDialogAsync <CustomDialog>(), dialog);
            Assert.NotNull(await window.GetCurrentDialogAsync <BaseMetroDialog>());
            Assert.Null(await window.GetCurrentDialogAsync <MessageDialog>());

            dialog.DataContext = vm;
            var textBlock = dialog.FindChild <TextBlock>("TheDialogBody");

            Assert.Equal(vm.Text, textBlock.Text);

            await window.HideMetroDialogAsync(dialog);

            await TestHost.SwitchToAppThread(); // No idea why we have to do this again

            Assert.Null(await window.GetCurrentDialogAsync <MessageDialog>());
        }
예제 #5
0
        public async Task TemplateBindingShouldGetTheFontSize()
        {
            await TestHost.SwitchToAppThread();

            var testTile = new Tile();
            var window   = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>(w =>
            {
                var grid = new Grid();
                grid.Children.Add(testTile);
                w.Content = grid;
            }).ConfigureAwait(false);

            window.Invoke(() =>
            {
                // default values

                Assert.Equal(16d, testTile.FindChild <AccessText>(string.Empty).FontSize);
                Assert.Equal(28d, testTile.FindChild <TextBlock>(string.Empty).FontSize);

                // now change it

                var fontSize = 42d;

                testTile.TitleFontSize = fontSize;
                Assert.Equal(fontSize, testTile.FindChild <AccessText>(string.Empty).FontSize);

                testTile.CountFontSize = fontSize;
                Assert.Equal(fontSize, testTile.FindChild <TextBlock>(string.Empty).FontSize);
            });
        }
예제 #6
0
        public async Task TimePickerTimeFormat()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <DateAndTimePickerWindow>().ConfigureAwait(false);

            window.Invoke(() =>
            {
                Assert.Equal("it-IT", window.TheDateTimeFormatPicker.Culture.IetfLanguageTag);
                Assert.False(window.TheDateTimeFormatPicker.IsMilitaryTime);

                window.TheDateTimeFormatPicker.SelectedTimeFormat = TimePickerFormat.Short;
                Assert.Equal("31/08/2016 14:00", window.TheDateTimeFormatPicker.FindChild <DatePickerTextBox>(string.Empty).Text);

                window.TheDateTimeFormatPicker.SelectedTimeFormat = TimePickerFormat.Long;
                Assert.Equal("31/08/2016 14:00:01", window.TheDateTimeFormatPicker.FindChild <DatePickerTextBox>(string.Empty).Text);

                window.TheDateTimeFormatPicker.SelectedDateFormat = DatePickerFormat.Long;
                Assert.Equal("mercoledì 31 agosto 2016 14:00:01", window.TheDateTimeFormatPicker.FindChild <DatePickerTextBox>(string.Empty).Text);


                window.TheDateTimeFormatPicker.SelectedTimeFormat = TimePickerFormat.Short;
                Assert.Equal("mercoledì 31 agosto 2016 14:00", window.TheDateTimeFormatPicker.FindChild <DatePickerTextBox>(string.Empty).Text);
            });
        }
예제 #7
0
        public async Task CanChangeLegacyTheme()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            ThemeManager.ChangeTheme(window, ThemeManager.DefaultAccents.First(accent => accent.Name == "Blue"), Theme.Dark);
        }
예제 #8
0
        public async Task ShowsRightWindowCommandsOnTopByDefault()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            Assert.Equal(WindowCommandsOverlayBehavior.Always, window.RightWindowCommandsOverlayBehavior);
        }
예제 #9
0
        public async Task DefaultFlyoutPositionIsLeft()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

            Assert.Equal(Position.Left, window.DefaultFlyout.Position);
        }
예제 #10
0
        public async Task FlyoutIsClosedByDefault()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

            Assert.False(window.DefaultFlyout.IsOpen);
        }
예제 #11
0
            public async Task DefaultFlyoutThemeIsDark()
            {
                await TestHost.SwitchToAppThread();

                var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

                Assert.Equal(FlyoutTheme.Dark, window.DefaultFlyout.Theme);
            }
예제 #12
0
        public async Task FlyoutIsHiddenByDefault()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

            // root grid should be hidden
            Assert.Equal(Visibility.Hidden, window.DefaultFlyout.Visibility);
        }
예제 #13
0
        public async Task MinMaxButtonsShouldBeToggled()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            var minButton = GetButton(window, "PART_Min");
            var maxButton = GetButton(window, "PART_Max");

            // min/max should be visible
            Assert.True(minButton.IsVisible);
            Assert.True(maxButton.IsVisible);
            Assert.Equal(ResizeMode.CanResize, window.ResizeMode);

            window.ResizeMode = ResizeMode.CanMinimize;

            // min should be visible, max hidden
            Assert.True(minButton.IsVisible);
            Assert.False(maxButton.IsVisible);
            Assert.Equal(ResizeMode.CanMinimize, window.ResizeMode);

            window.ShowMinButton = false;
            // min should be hidden
            Assert.False(minButton.IsVisible);

            window.ResizeMode = ResizeMode.NoResize;

            // min/max should be hidden
            Assert.False(minButton.IsVisible);
            Assert.False(maxButton.IsVisible);
            Assert.Equal(ResizeMode.NoResize, window.ResizeMode);

            window.ShowMaxRestoreButton = false;
            // max should be hidden
            Assert.False(maxButton.IsVisible);

            window.ResizeMode = ResizeMode.CanResizeWithGrip;

            // min/max should be hidden
            Assert.False(minButton.IsVisible);
            Assert.False(maxButton.IsVisible);
            Assert.Equal(ResizeMode.CanResizeWithGrip, window.ResizeMode);

            window.ShowMinButton        = true;
            window.ShowMaxRestoreButton = true;
            // min/max should be visible
            Assert.True(minButton.IsVisible);
            Assert.True(maxButton.IsVisible);

            window.ResizeMode = ResizeMode.NoResize;

            // min/max should be hidden
            Assert.False(minButton.IsVisible);
            Assert.False(maxButton.IsVisible);
            Assert.Equal(ResizeMode.NoResize, window.ResizeMode);
        }
예제 #14
0
        public async Task WindowCommandsShouldHaveTheParentWindow()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            Assert.Equal(window, window.LeftWindowCommands.ParentWindow);
            Assert.Equal(window, window.RightWindowCommands.ParentWindow);
            Assert.Equal(window, window.FindChild <WindowButtonCommands>("PART_WindowButtonCommands").ParentWindow);
        }
예제 #15
0
        public async Task IconShouldBeCollapsedWithShowTitleBarFalse()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>(w => w.ShowTitleBar = false);

            var icon = window.FindChild <ContentControl>("PART_Icon");

            Assert.Equal(Visibility.Collapsed, icon.Visibility);
        }
예제 #16
0
        public async Task ChangeAppStyleForWindowShouldThrowArgumentNullException()
        {
            await TestHost.SwitchToAppThread();

            await WindowHelpers.CreateInvisibleWindowAsync<MetroWindow>();

            Assert.Throws<ArgumentNullException>(() => ThemeManager.ChangeAppStyle((Window)null, ThemeManager.GetAccent("Red"), ThemeManager.GetAppTheme("BaseLight")));
            Assert.Throws<ArgumentNullException>(() => ThemeManager.ChangeAppStyle(Application.Current.MainWindow, ThemeManager.GetAccent("Red"), ThemeManager.GetAppTheme("UnknownTheme")));
            Assert.Throws<ArgumentNullException>(() => ThemeManager.ChangeAppStyle(Application.Current.MainWindow, ThemeManager.GetAccent("UnknownAccentColor"), ThemeManager.GetAppTheme("BaseLight")));
        }
예제 #17
0
        public async Task SquareButtonButtonTextIsLowerCase()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <ButtonWindow>();

            var presenter = window.SquareButton.FindChild <ContentPresenter>("PART_ContentPresenter");

            Assert.Equal("sometext", presenter.Content);
        }
예제 #18
0
        public async Task IconShouldBeVisibleByDefault()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            var icon = window.GetPart <ContentControl>("PART_Icon");

            Assert.Equal(Visibility.Visible, icon.Visibility);
        }
예제 #19
0
        public async Task DefaultButtonTextIsUpperCase()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <ButtonWindow>();

            var presenter = window.DefaultButton.FindChild <ContentPresenter>("PART_ContentPresenter");

            Assert.Equal("SOMETEXT", presenter.Content);
        }
예제 #20
0
        public async Task DefaultWindowCommandColorIsBlack()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <CleanWindow>();

            var blackBrushColor = ((SolidColorBrush)ThemeManager.GetAppTheme("BaseLight").Resources["BlackBrush"]).Color;

            window.AssertWindowCommandsColor(blackBrushColor);
        }
예제 #21
0
        /// <summary>
        /// Called immediately after the class has been created, before it is used.
        /// </summary>
        public async Task InitializeAsync()
        {
            await TestHost.SwitchToAppThread();

            this.Window = await WindowHelpers.CreateInvisibleWindowAsync <NumericUpDownWindow>().ConfigureAwait(false);

            this.TextBox = this.Window.TheNUD.FindChild <TextBox>();
            this.NumUp   = this.Window.TheNUD.FindChild <RepeatButton>("PART_NumericUp");
            this.NumDown = this.Window.TheNUD.FindChild <RepeatButton>("PART_NumericDown");
        }
예제 #22
0
        public async Task CheckDefaultOverlayBehaviors()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            Assert.Equal(WindowCommandsOverlayBehavior.Never, window.IconOverlayBehavior);
            Assert.Equal(WindowCommandsOverlayBehavior.Flyouts, window.LeftWindowCommandsOverlayBehavior);
            Assert.Equal(WindowCommandsOverlayBehavior.Flyouts, window.RightWindowCommandsOverlayBehavior);
            Assert.Equal(WindowCommandsOverlayBehavior.Always, window.WindowButtonCommandsOverlayBehavior);
        }
예제 #23
0
        public async Task SplitButtonShouldRespectParentIsEnabledProperty()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <ButtonWindow>();

            window.TheStackPanel.SetCurrentValue(UIElement.IsEnabledProperty, false);
            Assert.False(window.TheSplitButton.IsEnabled);

            window.TheStackPanel.SetCurrentValue(UIElement.IsEnabledProperty, true);
            Assert.True(window.TheSplitButton.IsEnabled);
        }
예제 #24
0
        public async Task IconCanOverlayHiddenTitlebar()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            window.IconOverlayBehavior = WindowCommandsOverlayBehavior.HiddenTitleBar;
            window.ShowTitleBar        = false;
            var icon = window.GetPart <ContentControl>("PART_Icon");

            Assert.Equal(Visibility.Visible, icon.Visibility);
        }
예제 #25
0
        public async Task FindFlyoutWithFindChildren()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

            Assert.DoesNotThrow(() => {
                var flyouts      = (window.Content as DependencyObject).FindChildren <Flyout>(true);
                var flyoutOnGrid = flyouts.FirstOrDefault(f => f.Name == "FlyoutOnGrid");
                Assert.NotNull(flyoutOnGrid);
            });
        }
예제 #26
0
        public async Task SquareButtonBespectsButtonHelperContentCharacterCasing()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <ButtonWindow>();

            Button defaultButton = window.SquareButton;

            ControlsHelper.SetContentCharacterCasing(defaultButton, CharacterCasing.Normal);
            var presenter = defaultButton.FindChild <ContentPresenter>("PART_ContentPresenter");

            Assert.Equal("SomeText", presenter.Content);
        }
예제 #27
0
        public async Task DefaultButtonRespectsButtonHelperPreserveTextCase()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <ButtonWindow>();

            Button defaultButton = window.DefaultButton;

            ButtonHelper.SetPreserveTextCase(defaultButton, true);
            var presenter = defaultButton.FindChild <ContentPresenter>("PART_ContentPresenter");

            Assert.Equal("SomeText", presenter.Content);
        }
예제 #28
0
        public async Task IconShouldBeVisibleWithShowTitleBarFalseAndOverlayBehaviorHiddenTitleBar()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>(w => {
                w.IconOverlayBehavior = WindowCommandsOverlayBehavior.HiddenTitleBar;
                w.ShowTitleBar        = false;
            });

            var icon = window.FindChild <ContentControl>("PART_Icon");

            Assert.Equal(Visibility.Visible, icon.Visibility);
        }
예제 #29
0
        public async Task WindowButtonCommandsAreOverFlyout()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <FlyoutWindow>();

            window.RightFlyout.IsOpen = true;

            int windowCommandsZIndex = Panel.GetZIndex(window.WindowButtonCommands);
            int flyoutindex          = Panel.GetZIndex(window.RightFlyout);

            Assert.True(windowCommandsZIndex > flyoutindex);
        }
예제 #30
0
        public async Task WindowSettingsUpgradeSettingsShouldBeTrueByDefault()
        {
            await TestHost.SwitchToAppThread();

            var window = await WindowHelpers.CreateInvisibleWindowAsync <MetroWindow>();

            window.SaveWindowPosition = true;

            var settings = window.GetWindowPlacementSettings();

            Assert.NotNull(settings);
            Assert.Equal(true, settings.UpgradeSettings);
        }