Click here to Skip to main content
15,896,063 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 49.4K   572   11  
This article explains how to write unit tests for MVVM using Catel.
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="BooleanToOppositeBooleanConverter.cs" company="Catel development team">
//   Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
//   Convert a value to it's inverted value.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

using System;
using System.Windows.Data;

namespace Catel.Windows.Data.Converters
{
    /// <summary>
    /// Convert a value to it's inverted value.
    /// </summary>
    /// <remarks>Currently only values of type bool are accepted.</remarks>
#if !SILVERLIGHT
    [ValueConversion(typeof(bool), typeof(bool))]
#endif
    public class BooleanToOppositeBooleanConverter : IValueConverter
    {
        /// <summary>
        /// Converts value to the inverted value.
        /// </summary>
        /// <param name="value">A value, currently only bool supported.</param>
        /// <param name="targetType">Currently only bool supported.</param>
        /// <param name="parameter">Not in use.</param>
        /// <param name="culture">Not in use.</param>
        /// <returns>The inverted value.</returns>
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool? result = value as bool?;
            if (result.HasValue)
            {
                result = !result.Value;
            }

            return result;
        }

        /// <summary>
        /// Converts value back, simply inverts again.
        /// </summary>
        /// <param name="value">A value, currently only bool supported.</param>
        /// <param name="targetType">Currently only bool supported.</param>
        /// <param name="parameter">Not in use.</param>
        /// <param name="culture">Not in use.</param>
        /// <returns>The inverted value.</returns>
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool? result = value as bool?;
            if (result.HasValue)
            {
                result = !result.Value;
            }

            return result;
        }
    }
}

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