Skip to content

Commit

Permalink
Added unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
scdmitryvodich committed Aug 9, 2019
1 parent 0856e36 commit bfed85e
Show file tree
Hide file tree
Showing 6 changed files with 186 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
namespace Xceed.Wpf.AvalonDock.Test
{
using System;
using System.Windows.Controls;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Xceed.Wpf.AvalonDock.Layout;

[TestClass]
public sealed class DockingUtilitiesTest
{
[TestMethod]
public void CalculatedDockMinWidthHeightTest()
{
double defaultDockMinHeight = 25;
double defaultDockMinWidth = 25;

const double documentPaneDockMinHeight = 200;
const double documentPaneDockMinWidth = 400;
LayoutDocumentPane layoutDocumentPane = new LayoutDocumentPane { DockMinHeight = documentPaneDockMinHeight, DockMinWidth = documentPaneDockMinWidth };
layoutDocumentPane.InsertChildAt( 0, new LayoutDocument { ContentId = "Document" } );

LayoutDocumentPaneGroup layoutDocumentPaneGroup = new LayoutDocumentPaneGroup();
layoutDocumentPaneGroup.InsertChildAt( 0, layoutDocumentPane );

const double anchorablePaneDockMinHeight = 80;
const double anchorablePaneDockMinWidth = 160;
LayoutAnchorablePane layoutAnchorablePane = new LayoutAnchorablePane { DockMinHeight = anchorablePaneDockMinHeight, DockMinWidth = anchorablePaneDockMinWidth };
layoutAnchorablePane.InsertChildAt( 0, new LayoutAnchorable { ContentId = "Anchorable" } );

LayoutAnchorablePaneGroup layoutAnchorablePaneGroup = new LayoutAnchorablePaneGroup();
layoutAnchorablePaneGroup.InsertChildAt( 0, layoutAnchorablePane );

LayoutPanel layoutPanel = new LayoutPanel();
layoutPanel.InsertChildAt( 0, layoutDocumentPaneGroup );
layoutPanel.InsertChildAt( 1, layoutAnchorablePaneGroup );

Assert.AreEqual( defaultDockMinWidth, layoutPanel.DockMinWidth );
Assert.AreEqual( defaultDockMinHeight, layoutPanel.DockMinHeight );
Assert.AreEqual( documentPaneDockMinWidth + anchorablePaneDockMinWidth, layoutPanel.CalculatedDockMinWidth() );
Assert.AreEqual( Math.Max(documentPaneDockMinHeight, anchorablePaneDockMinHeight), layoutPanel.CalculatedDockMinHeight() );

Assert.AreEqual( documentPaneDockMinWidth, layoutDocumentPane.DockMinWidth );
Assert.AreEqual( documentPaneDockMinHeight, layoutDocumentPane.DockMinHeight );
Assert.AreEqual( layoutDocumentPane.DockMinWidth, layoutDocumentPane.CalculatedDockMinWidth() );
Assert.AreEqual( layoutDocumentPane.DockMinHeight, layoutDocumentPane.CalculatedDockMinHeight() );

Assert.AreEqual( defaultDockMinWidth, layoutDocumentPaneGroup.DockMinWidth );
Assert.AreEqual( defaultDockMinWidth, layoutDocumentPaneGroup.DockMinHeight );
Assert.AreEqual( documentPaneDockMinWidth, layoutDocumentPaneGroup.CalculatedDockMinWidth() );
Assert.AreEqual( documentPaneDockMinHeight, layoutDocumentPaneGroup.CalculatedDockMinHeight() );

Assert.AreEqual( anchorablePaneDockMinWidth, layoutAnchorablePane.DockMinWidth );
Assert.AreEqual( anchorablePaneDockMinHeight, layoutAnchorablePane.DockMinHeight );
Assert.AreEqual( layoutAnchorablePane.DockMinWidth, layoutAnchorablePane.CalculatedDockMinWidth() );
Assert.AreEqual( layoutAnchorablePane.DockMinHeight, layoutAnchorablePane.CalculatedDockMinHeight() );

Assert.AreEqual( defaultDockMinWidth, layoutAnchorablePaneGroup.DockMinWidth );
Assert.AreEqual( defaultDockMinWidth, layoutAnchorablePaneGroup.DockMinHeight );
Assert.AreEqual( anchorablePaneDockMinWidth, layoutAnchorablePaneGroup.CalculatedDockMinWidth() );
Assert.AreEqual( anchorablePaneDockMinHeight, layoutAnchorablePaneGroup.CalculatedDockMinHeight() );

layoutPanel.RemoveChild( layoutDocumentPaneGroup );
Assert.AreEqual( anchorablePaneDockMinWidth, layoutPanel.CalculatedDockMinWidth() );
Assert.AreEqual( anchorablePaneDockMinHeight, layoutPanel.CalculatedDockMinHeight() );
}

[TestMethod]
public void UpdateDocMinWidthHeightTest()
{
double documentPaneDockMinHeight = 100;
double documentPaneDockMinWidth = 101;
LayoutDocumentPane layoutDocumentPane = new LayoutDocumentPane { DockMinHeight = documentPaneDockMinHeight, DockMinWidth = documentPaneDockMinWidth };
layoutDocumentPane.InsertChildAt( 0, new LayoutDocument { ContentId = "Document" } );

LayoutDocumentPaneGroup layoutDocumentPaneGroup = new LayoutDocumentPaneGroup();
layoutDocumentPaneGroup.InsertChildAt( 0, layoutDocumentPane );

double anchorablePane1DockMinHeight = 150;
double anchorablePane1DockMinWidth = 151;
LayoutAnchorablePane layoutAnchorablePane1 = new LayoutAnchorablePane { DockMinHeight = anchorablePane1DockMinHeight, DockMinWidth = anchorablePane1DockMinWidth };
layoutAnchorablePane1.InsertChildAt( 0, new LayoutAnchorable { ContentId = "Anchorable1" } );

double anchorablePane2DockMinHeight = 200;
double anchorablePane2DockMinWidth = 201;
LayoutAnchorablePane layoutAnchorablePane2 = new LayoutAnchorablePane { DockMinHeight = anchorablePane2DockMinHeight, DockMinWidth = anchorablePane2DockMinWidth };
layoutAnchorablePane2.InsertChildAt( 0, new LayoutAnchorable { ContentId = "Anchorable2" } );

LayoutAnchorablePaneGroup layoutAnchorablePaneGroup = new LayoutAnchorablePaneGroup { Orientation = Orientation.Horizontal };
layoutAnchorablePaneGroup.InsertChildAt( 0, layoutAnchorablePane1 );
layoutAnchorablePaneGroup.InsertChildAt( 0, layoutAnchorablePane2 );

LayoutPanel layoutPanel = new LayoutPanel { Orientation = Orientation.Vertical };
layoutPanel.InsertChildAt( 0, layoutDocumentPaneGroup );
layoutPanel.InsertChildAt( 1, layoutAnchorablePaneGroup );

Assert.AreEqual( anchorablePane2DockMinWidth + anchorablePane1DockMinWidth, layoutAnchorablePaneGroup.CalculatedDockMinWidth() );
Assert.AreEqual( Math.Max( anchorablePane2DockMinHeight, anchorablePane1DockMinHeight ), layoutAnchorablePaneGroup.CalculatedDockMinHeight() );

Assert.AreEqual( documentPaneDockMinWidth, layoutDocumentPaneGroup.CalculatedDockMinWidth() );
Assert.AreEqual( documentPaneDockMinHeight, layoutDocumentPaneGroup.CalculatedDockMinHeight() );

Assert.AreEqual(
Math.Max( anchorablePane1DockMinWidth + anchorablePane2DockMinWidth, documentPaneDockMinWidth ),
layoutPanel.CalculatedDockMinWidth() );

Assert.AreEqual( documentPaneDockMinHeight + anchorablePane2DockMinHeight, layoutPanel.CalculatedDockMinHeight() );
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Windows.Data;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Xceed.Wpf.AvalonDock.Controls;
using Xceed.Wpf.AvalonDock.Converters;
using Xceed.Wpf.AvalonDock.Layout;

namespace Xceed.Wpf.AvalonDock.Test
{
[TestClass]
public sealed class LayoutAnchorableTest
{
[TestMethod]
public void ClearBindingOfHiddenWindowTest()
{
LayoutAnchorable layoutAnchorable = new LayoutAnchorable
{
FloatingWidth = 50,
FloatingHeight = 100,
ContentId = "Test"
};

LayoutAnchorablePane layoutAnchorablePane = new LayoutAnchorablePane( layoutAnchorable );
LayoutAnchorablePaneGroup layoutAnchorablePaneGroup = new LayoutAnchorablePaneGroup( layoutAnchorablePane );
LayoutAnchorableFloatingWindow layoutFloatingWindow = new LayoutAnchorableFloatingWindow
{
RootPanel = layoutAnchorablePaneGroup
};

var ctor = typeof( LayoutAnchorableFloatingWindowControl )
.GetTypeInfo()
.GetConstructors( BindingFlags.NonPublic | BindingFlags.Instance )
.First( x => x.GetParameters().Length == 1 );

LayoutAnchorableFloatingWindowControl floatingWindowControl = ctor.Invoke( new object[] {layoutFloatingWindow} ) as LayoutAnchorableFloatingWindowControl;
floatingWindowControl.SetBinding(
UIElement.VisibilityProperty,
new Binding( "IsVisible" )
{
Source = floatingWindowControl.Model,
Converter = new BoolToVisibilityConverter(),
Mode = BindingMode.OneWay,
ConverterParameter = Visibility.Hidden
} );

BindingExpression visibilityBinding = floatingWindowControl.GetBindingExpression( UIElement.VisibilityProperty );
Assert.IsNotNull( visibilityBinding );

layoutAnchorable.Show();
layoutAnchorable.Hide();

visibilityBinding = floatingWindowControl.GetBindingExpression( UIElement.VisibilityProperty );
Assert.IsNotNull( visibilityBinding );

floatingWindowControl.Hide();

visibilityBinding = floatingWindowControl.GetBindingExpression( UIElement.VisibilityProperty );
Assert.IsNull( visibilityBinding );
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,13 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xaml" />
<Reference Include="System.XML" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="AnchorablePaneTest.cs" />
<Compile Include="DockingUtilitiesTest.cs" />
<Compile Include="LayoutAnchorableTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestApp.xaml.cs">
<DependentUpon>TestApp.xaml</DependentUpon>
Expand Down Expand Up @@ -102,4 +105,4 @@
<Error Condition="!Exists('..\..\packages\MSTest.TestAdapter.1.4.0\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MSTest.TestAdapter.1.4.0\build\net45\MSTest.TestAdapter.targets'))" />
</Target>
<Import Project="..\..\packages\MSTest.TestAdapter.1.4.0\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\..\packages\MSTest.TestAdapter.1.4.0\build\net45\MSTest.TestAdapter.targets')" />
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,8 @@ protected override void OnClosed( EventArgs e )
BindingOperations.ClearBinding(_model, VisibilityProperty);

_model.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler( _model_PropertyChanged );

Activated -= LayoutAnchorableFloatingWindowControl_Activated;
}

protected override void OnClosing( System.ComponentModel.CancelEventArgs e )
Expand Down Expand Up @@ -329,7 +331,7 @@ private void SetVisibilityBinding()
{
SetBinding(
VisibilityProperty,
new Binding("IsVisible")
new Binding( "IsVisible" )
{
Source = _model,
Converter = new BoolToVisibilityConverter(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,8 @@ internal virtual void UpdateThemeResources( Theme oldTheme = null )
}
}

var manager = _model.Root.Manager;
if( manager.Theme != null )
var manager = _model.Root?.Manager;
if( manager?.Theme != null )
{
if( manager.Theme is DictionaryTheme )
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ public void Hide( bool cancelable = true )
PreviousContainer = parentAsGroup;
PreviousContainerIndex = parentAsGroup.IndexOfChild( this );
}
Root.Hidden.Add( this );
Root?.Hidden?.Add( this );
RaisePropertyChanged( "IsVisible" );
RaisePropertyChanged( "IsHidden" );
NotifyIsVisibleChanged();
Expand Down

0 comments on commit bfed85e

Please sign in to comment.