Click here to Skip to main content
15,881,248 members
Articles / Desktop Programming / WPF

Catel - Part 4 of n: Unit testing with Catel

Rate me:
Please Sign up or sign in to vote.
4.55/5 (10 votes)
28 Jan 2011CPOL11 min read 48.8K   572   11  
This article explains how to write unit tests for MVVM using Catel.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:Converters="clr-namespace:Catel.Windows.Data.Converters"
    xmlns:ToolkitControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit">

	<ResourceDictionary.MergedDictionaries>

        <!-- Include sizes -->
        <ResourceDictionary Source="/Catel.Silverlight;component/themes/generic/assets/catel.sizes.normal.xaml" />
        
		<!-- Include all control styles -->
        <ResourceDictionary Source="/Catel.Silverlight;component/themes/InfoBarMessageControl.generic.xaml" />

	</ResourceDictionary.MergedDictionaries>

	<!-- Converters -->
    <Converters:BooleanToGrayscaleConverter x:Key="BooleanToGrayscaleConverter" />
    <Converters:ContainsItemsConverter x:Key="ContainsItemsConverter" />
    <Converters:GetFirstValidationErrorConverter x:Key="GetFirstValidationErrorConverter" />

    <!-- Buttons -->
    <Style x:Key="DefaultButtonStyle" TargetType="Button">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button}" />-->
        <Setter Property="Margin" Value="6" />
        <!--<Setter Property="ToolTipService.IsEnabled" Value="{Binding RelativeSource={RelativeSource Self}, Path=ToolTip, Converter={StaticResource ContainsItemsConverter}}" />-->

        <!-- Grayscale effect when disabled -->
        <!--<Setter Property="Effect">
            <Setter.Value>
                <Effects:GrayscaleEffect DesaturationFactor="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=IsEnabled, Converter={StaticResource BooleanToGrayscaleConverter}}" />
            </Setter.Value>
        </Setter>-->
    </Style>

    <!-- Very large image buttons -->
    <Style x:Key="VeryLargeImageButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="Width" Value="{StaticResource Size.Image.VeryLarge}" />
        <Setter Property="Height" Value="{StaticResource Size.Image.VeryLarge}" />
    </Style>

    <Style x:Key="VeryLargeRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource VeryLargeImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <!-- Large image buttons -->
    <Style x:Key="LargeImageButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="Width" Value="{StaticResource Size.Image.Large}" />
        <Setter Property="Height" Value="{StaticResource Size.Image.Large}" />
    </Style>

    <Style x:Key="LargeRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource LargeImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="LargeSideImageButtonStyle" TargetType="Button" BasedOn="{StaticResource LargeImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button}" />-->
        <Setter Property="Margin" Value="6" />
    </Style>

    <!-- Medium image buttons -->
    <Style x:Key="MediumImageButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="Width" Value="{StaticResource Size.Image.Medium}" />
        <Setter Property="Height" Value="{StaticResource Size.Image.Medium}" />
    </Style>

    <Style x:Key="ImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumImageButtonStyle}" />

    <Style x:Key="MediumRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="MediumTopRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumRightAlignedImageButtonStyle}">
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style x:Key="RightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumRightAlignedImageButtonStyle}">
    </Style>

    <Style x:Key="TopRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumTopRightAlignedImageButtonStyle}">
    </Style>

    <Style x:Key="MediumLeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.LeftAligned}" />-->
        <Setter Property="Margin" Value="0, 6, 6, 0" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

    <Style x:Key="MediumTopLeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumLeftAlignedImageButtonStyle}">
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style x:Key="LeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumLeftAlignedImageButtonStyle}">
    </Style>

    <Style x:Key="TopLeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource MediumTopLeftAlignedImageButtonStyle}">
    </Style>

    <!-- Toolbar image buttons (small) -->
    <Style x:Key="ToolBarImageButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="Width" Value="{StaticResource Size.Image.Small}" />
        <Setter Property="Height" Value="{StaticResource Size.Image.Small}" />
    </Style>

    <Style x:Key="RightAlignedToolBarImageButtonStyle" TargetType="Button" BasedOn="{StaticResource ToolBarImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="TopRightAlignedToolBarImageButtonStyle" TargetType="Button" BasedOn="{StaticResource RightAlignedToolBarImageButtonStyle}">
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style x:Key="LeftAlignedToolBarImageButtonStyle" TargetType="Button" BasedOn="{StaticResource ToolBarImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.LeftAligned}" />-->
        <Setter Property="Margin" Value="0, 6, 6, 0" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

    <!-- Small image buttons -->
    <Style x:Key="SmallImageButtonStyle" TargetType="Button" BasedOn="{StaticResource ToolBarImageButtonStyle}" />

    <Style x:Key="SmallRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource SmallImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="SmallLeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource SmallImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.LeftAligned}" />-->
        <Setter Property="Margin" Value="0, 6, 6, 0" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

    <!-- Very small image buttons -->
    <Style x:Key="VerySmallImageButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="Width" Value="{StaticResource Size.Image.VerySmall}" />
        <Setter Property="Height" Value="{StaticResource Size.Image.VerySmall}" />
    </Style>

    <Style x:Key="VerySmallRightAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource VerySmallImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="VerySmallLeftAlignedImageButtonStyle" TargetType="Button" BasedOn="{StaticResource VerySmallImageButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.LeftAligned}" />-->
        <Setter Property="Margin" Value="0, 6, 6, 0" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

    <!-- Fixed size buttons -->
    <Style x:Key="FixedSizeButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
        <Setter Property="MinWidth" Value="100" />
        <Setter Property="MinHeight" Value="{StaticResource Size.MinHeight}" />
    </Style>

    <Style x:Key="LeftAlignedFixedSizeButtonStyle" TargetType="Button" BasedOn="{StaticResource FixedSizeButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.LeftAligned}" />-->
        <Setter Property="Margin" Value="0, 6, 6, 0" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

    <Style x:Key="RightAlignedFixedSizeButtonStyle" TargetType="Button" BasedOn="{StaticResource FixedSizeButtonStyle}">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Button.RightAligned}" />-->
        <Setter Property="Margin" Value="6, 6, 0, 0" />
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="BottomRightAlignedFixedSizeButtonStyle" TargetType="Button" BasedOn="{StaticResource RightAlignedFixedSizeButtonStyle}">
        <Setter Property="Button.VerticalAlignment" Value="Bottom" />
    </Style>

    <!-- TextBlock -->
    <Style x:Key="DefaultTextBlockStyle" TargetType="TextBlock">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.TextBlock}" />-->
        <Setter Property="Margin" Value="2" />
        <Setter Property="VerticalAlignment" Value="Center" />
    </Style>

    <Style x:Key="CaptionTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
        <Setter Property="FontSize" Value="14" />
    </Style>

    <Style x:Key="RightAlignedTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="BoldTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
        <Setter Property="FontWeight" Value="Bold" />
    </Style>

    <Style x:Key="HeadingTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
        <Setter Property="FontSize" Value="14" />
        <Setter Property="FontWeight" Value="Bold" />
    </Style>

    <!-- ListBox -->
    <Style x:Key="DefaultListBoxStyle" TargetType="ListBox">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="2" />
    </Style>

    <!-- GroupBox -->
    <!--<Style x:Key="DefaultGroupBoxStyle" TargetType="GroupBox">
        <Setter Property="BorderBrush" Value="#888" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Margin" Value="{StaticResource Margin.GroupBox}" />
	</Style>-->

    <!-- TextBox -->
    <Style x:Key="DefaultTextBoxStyle" TargetType="TextBox">
        <Setter Property="MinHeight" Value="{StaticResource Size.MinHeight}" />
        <!--<Setter Property="Padding" Value="{StaticResource Padding.TextBox}" />
		<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Padding" Value="2" />
        <Setter Property="Margin" Value="6" />
        <Setter Property="HorizontalAlignment" Value="Stretch" />

        <!-- Show errors as tooltip -->
        <!--<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource GetFirstValidationErrorConverter}}" />
			</Trigger>
		</Style.Triggers>-->
    </Style>

    <Style x:Key="SmallTextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">
        <Setter Property="Width" Value="60"/>
    </Style>

    <!-- PasswordBox -->
    <Style x:Key="DefaultPasswordBoxStyle" TargetType="PasswordBox">
        <Setter Property="MinHeight" Value="{StaticResource Size.MinHeight}" />
        <!--<Setter Property="Padding" Value="{StaticResource Padding.TextBox}" />
		<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Padding" Value="2" />
        <Setter Property="Margin" Value="6" />

        <!-- Show errors as tooltip -->
        <!--<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource GetFirstValidationErrorConverter}}" />
			</Trigger>
		</Style.Triggers>-->
    </Style>

    <!-- Slider -->
    <Style x:Key="DefaultSliderStyle" TargetType="Slider">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="6" />
    </Style>

    <!-- Progress bar -->
    <Style x:Key="DefaultProgressBarStyle" TargetType="ProgressBar">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="6" />
    </Style>

    <!-- TabControl -->
    <!--<Style x:Key="DefaultTabControlStyle" TargetType="TabControl" BasedOn="{StaticResource {x:Type TabControl}}">
		<Setter Property="Margin" Value="{StaticResource Margin.Default}" />
	</Style>-->

    <!-- CheckBox -->
    <Style x:Key="DefaultCheckBoxStyle" TargetType="CheckBox">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.CheckBox}" />-->
        <Setter Property="Margin" Value="6, 2, 6, 2" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Width" Value="Auto" />
        <Setter Property="HorizontalAlignment" Value="Left" />

        <!-- Show errors as tooltip -->
        <!--<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource GetFirstValidationErrorConverter}}" />
			</Trigger>
		</Style.Triggers>-->
    </Style>

    <!-- RadioButton -->
    <Style x:Key="DefaultRadioButtonStyle" TargetType="RadioButton">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.RadioButton}" />-->
        <Setter Property="Margin" Value="6,2,6,2" />
        <Setter Property="VerticalAlignment" Value="Center" />

        <!-- Show errors as tooltip -->
        <!--<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource GetFirstValidationErrorConverter}}" />
			</Trigger>
		</Style.Triggers>-->
    </Style>

    <!-- ComboBox -->
    <Style x:Key="DefaultComboBoxStyle" TargetType="ComboBox">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="6" />
        <Setter Property="MinWidth" Value="120" />

        <!-- Show errors as tooltip -->
        <!--<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource GetFirstValidationErrorConverter}}" />
			</Trigger>
		</Style.Triggers>-->
    </Style>

    <!-- Grid -->
    <Style x:Key="WindowGridStyle" TargetType="Grid">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="6" />
    </Style>

    <!-- Wrap panel -->
    <Style x:Key="ButtonsWrapPanelStyle" TargetType="ToolkitControls:WrapPanel">
        <!--<Setter Property="Margin" Value="{StaticResource Margin.Default}" />-->
        <Setter Property="Margin" Value="6" />
    </Style>

    <Style x:Key="RightAlignedButtonsWrapPanelStyle" TargetType="ToolkitControls:WrapPanel" BasedOn="{StaticResource ButtonsWrapPanelStyle}">
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>

    <Style x:Key="LeftAlignedButtonsWrapPanelStyle" TargetType="ToolkitControls:WrapPanel" BasedOn="{StaticResource ButtonsWrapPanelStyle}">
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>

</ResourceDictionary>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Netherlands Netherlands
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions