public void BehaviorTest()
        {
            #region Init

            var behavior = new GridColumnConditionalWidthsBehavior();

            var columnWidth1 = new GridLength(1, GridUnitType.Star);
            var columnWidth2 = new GridLength(200d);
            var columnWidth3 = GridLength.Auto;
            var columnNewWidth1 = new GridLength(1, GridUnitType.Star);
            var columnNewWidth2 = new GridLength(1, GridUnitType.Star);
            var columnNewWidth3 = new GridLength(100d);
            var conditionalWidth = new GridLength(2, GridUnitType.Star);

            var column1 = new ColumnDefinition() { Width = columnWidth1};
            var column2 = new ColumnDefinition() { Width = columnWidth2 };
            var column3 = new ColumnDefinition() { Width = columnWidth3 };
            var grid = new Grid {Width = 1000d};
            grid.ColumnDefinitions.Add(column1);
            grid.ColumnDefinitions.Add(column2);
            grid.ColumnDefinitions.Add(column3);

            behavior.Column = 2;
            behavior.ConditionalWidth = conditionalWidth;
            behavior.Attach(grid);

            #endregion Init

            behavior.Condition = true;

            //test ConditionalWidth
            Assert.AreEqual(column2.Width.Value, 200d);

            // grid layout changes
            column1.Width = columnNewWidth1;
            column2.Width = columnNewWidth2;
            column3.Width = columnNewWidth3;

            // test restore
            behavior.Condition = false;

            Assert.AreEqual(column1.Width, columnWidth1);
            Assert.AreEqual(column2.Width, columnWidth2);
            Assert.AreEqual(column3.Width, columnWidth3);

            // test saved
            behavior.Condition = true;

            Assert.AreEqual(column1.Width, columnNewWidth1);
            Assert.AreEqual(column2.Width, columnNewWidth2);
            Assert.AreEqual(column3.Width, columnNewWidth3);
        }
        public void PublicPropertiesGetSetTest()
        {
            var behavior = new GridColumnConditionalWidthsBehavior();

            const int column = 1;
            behavior.Column = column;
            Assert.AreEqual(behavior.Column, column);

            var condition = true;
            behavior.Condition = condition;
            Assert.AreEqual(behavior.Condition, condition);

            condition = false;
            behavior.Condition = condition;
            Assert.AreEqual(behavior.Condition, condition);

            var conditionalWidth = new GridLength(1.23d, GridUnitType.Star);
            behavior.ConditionalWidth = conditionalWidth;
            Assert.AreEqual(behavior.ConditionalWidth, conditionalWidth);
        }