Browse Source

Added shared TestRoot class.

And use it in every unit test project except SceneGraph as that one is
different.
pull/417/head
Steven Kirk 10 years ago
parent
commit
eec9a1f44a
  1. 1
      tests/Perspex.Controls.UnitTests/ContentControlTests.cs
  2. 42
      tests/Perspex.Controls.UnitTests/ControlTests.cs
  3. 76
      tests/Perspex.Controls.UnitTests/ControlTests_NameScope.cs
  4. 2
      tests/Perspex.Controls.UnitTests/GridSplitterTests.cs
  5. 12
      tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj
  6. 1
      tests/Perspex.Controls.UnitTests/Presenters/ContentPresenterTests.cs
  7. 1
      tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs
  8. 38
      tests/Perspex.Controls.UnitTests/TestRoot.cs
  9. 1
      tests/Perspex.Controls.UnitTests/TreeViewTests.cs
  10. 1
      tests/Perspex.Markup.UnitTests/ControlLocatorTests.cs
  11. 1
      tests/Perspex.Markup.Xaml.UnitTests/Data/BindingTests_ElementName.cs
  12. 8
      tests/Perspex.Markup.Xaml.UnitTests/Perspex.Markup.Xaml.UnitTests.csproj
  13. 67
      tests/Perspex.Markup.Xaml.UnitTests/TestRoot.cs
  14. 5
      tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj
  15. 1
      tests/Perspex.Styling.UnitTests/StyleTests.cs
  16. 39
      tests/Perspex.Styling.UnitTests/TestRoot.cs
  17. 1
      tests/Perspex.UnitTests/Perspex.UnitTests.csproj
  18. 37
      tests/Perspex.UnitTests/TestRoot.cs
  19. 65
      tests/Perspex.UnitTests/TestTemplatedRoot.cs

1
tests/Perspex.Controls.UnitTests/ContentControlTests.cs

@ -8,6 +8,7 @@ using Perspex.Controls.Presenters;
using Perspex.Controls.Templates;
using Perspex.LogicalTree;
using Perspex.Styling;
using Perspex.UnitTests;
using Perspex.VisualTree;
using Xunit;

42
tests/Perspex.Controls.UnitTests/ControlTests.cs

@ -5,10 +5,8 @@ using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using Moq;
using Perspex.Layout;
using Perspex.Platform;
using Perspex.Rendering;
using Perspex.Styling;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Controls.UnitTests
@ -147,44 +145,6 @@ namespace Perspex.Controls.UnitTests
}
}
private class TestRoot : Decorator, ILayoutRoot, IRenderRoot, IStyleRoot
{
public Size ClientSize
{
get { throw new NotImplementedException(); }
}
public Size MaxClientSize
{
get { throw new NotImplementedException(); }
}
public ILayoutManager LayoutManager
{
get { throw new NotImplementedException(); }
}
public IRenderTarget RenderTarget
{
get { throw new NotImplementedException(); }
}
public IRenderQueueManager RenderQueueManager
{
get { throw new NotImplementedException(); }
}
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public Point PointToScreen(Point p)
{
throw new NotImplementedException();
}
}
private class TestControl : Control
{
public new PerspexObject InheritanceParent => base.InheritanceParent;

76
tests/Perspex.Controls.UnitTests/ControlTests_NameScope.cs

@ -6,6 +6,7 @@ using Perspex.Controls.Presenters;
using Perspex.Controls.Templates;
using Perspex.Rendering;
using Perspex.Styling;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Controls.UnitTests
@ -17,7 +18,7 @@ namespace Perspex.Controls.UnitTests
{
var root = new TestRoot
{
Content = new Border
Child = new Border
{
Name = "foo",
Child = new Border
@ -28,10 +29,9 @@ namespace Perspex.Controls.UnitTests
};
root.ApplyTemplate();
((ContentPresenter)root.Presenter).UpdateChild();
Assert.Same(root.Find("foo"), root.Content);
Assert.Same(root.Find("bar"), ((Border)root.Content).Child);
Assert.Same(root.FindControl<Border>("foo"), root.Child);
Assert.Same(root.FindControl<Border>("bar"), ((Border)root.Child).Child);
}
[Fact]
@ -39,7 +39,7 @@ namespace Perspex.Controls.UnitTests
{
var root = new TestRoot
{
Content = new Border
Child = new Border
{
Name = "foo",
Child = new Border
@ -49,18 +49,16 @@ namespace Perspex.Controls.UnitTests
}
};
root.ApplyTemplate();
root.Content = null;
root.Presenter.ApplyTemplate();
root.Child = null;
Assert.Null(root.Find("foo"));
Assert.Null(root.Find("bar"));
Assert.Null(root.FindControl<Border>("foo"));
Assert.Null(root.FindControl<Border>("bar"));
}
[Fact]
public void Control_Should_Not_Register_With_Template_NameScope()
{
var root = new TestRoot
var root = new TestTemplatedRoot
{
Content = new Border
{
@ -72,61 +70,5 @@ namespace Perspex.Controls.UnitTests
Assert.Null(NameScope.GetNameScope((Control)root.Presenter).Find("foo"));
}
private class TestRoot : ContentControl, IRenderRoot, INameScope, IStyleRoot
{
private readonly NameScope _nameScope = new NameScope();
public TestRoot()
{
Template = new FuncControlTemplate<TestRoot>(x => new ContentPresenter
{
Name = "PART_ContentPresenter",
[!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
});
}
public event EventHandler<NameScopeEventArgs> Registered
{
add { _nameScope.Registered += value; }
remove { _nameScope.Registered -= value; }
}
public event EventHandler<NameScopeEventArgs> Unregistered
{
add { _nameScope.Unregistered += value; }
remove { _nameScope.Unregistered -= value; }
}
public IRenderQueueManager RenderQueueManager
{
get { throw new NotImplementedException(); }
}
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public Point PointToScreen(Point p)
{
throw new NotImplementedException();
}
public void Register(string name, object element)
{
_nameScope.Register(name, element);
}
public object Find(string name)
{
return _nameScope.Find(name);
}
public void Unregister(string name)
{
_nameScope.Unregister(name);
}
}
}
}

2
tests/Perspex.Controls.UnitTests/GridSplitterTests.cs

@ -3,7 +3,7 @@
using Perspex.Controls.Primitives;
using Perspex.Input;
using Perspex.Platform;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Controls.UnitTests

12
tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj

@ -137,7 +137,6 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Templates\TemplateExtensionsTests.cs" />
<Compile Include="TestTemplatedControl.cs" />
<Compile Include="TestRoot.cs" />
<Compile Include="Utils\AncestorFinderTests.cs" />
<Compile Include="Utils\HotKeyManagerTests.cs" />
<Compile Include="WrapPanelTests.cs" />
@ -151,6 +150,10 @@
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project>
<Name>Perspex.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Application\Perspex.Application.csproj">
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project>
<Name>Perspex.Application</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
@ -179,6 +182,10 @@
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\Perspex.UnitTests\Perspex.UnitTests.csproj">
<Project>{88060192-33d5-4932-b0f9-8bd2763e857d}</Project>
<Name>Perspex.UnitTests</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
@ -187,6 +194,9 @@
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup>

1
tests/Perspex.Controls.UnitTests/Presenters/ContentPresenterTests.cs

@ -6,6 +6,7 @@ using Moq;
using Perspex.Controls.Presenters;
using Perspex.Controls.Primitives;
using Perspex.Controls.Templates;
using Perspex.UnitTests;
using Perspex.VisualTree;
using Xunit;

1
tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs

@ -12,6 +12,7 @@ using Perspex.Layout;
using Perspex.LogicalTree;
using Perspex.Platform;
using Perspex.Styling;
using Perspex.UnitTests;
using Perspex.VisualTree;
using Xunit;

38
tests/Perspex.Controls.UnitTests/TestRoot.cs

@ -1,38 +0,0 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Moq;
using Perspex.Layout;
using Perspex.Platform;
using Perspex.Rendering;
using Perspex.Styling;
namespace Perspex.Controls.UnitTests
{
internal class TestRoot : Decorator, ILayoutRoot, IRenderRoot, IStyleRoot
{
public Size ClientSize => new Size(100, 100);
public Size MaxClientSize => Size.Infinity;
public ILayoutManager LayoutManager => new Mock<ILayoutManager>().Object;
public IRenderTarget RenderTarget
{
get { throw new NotImplementedException(); }
}
public IRenderQueueManager RenderQueueManager => null;
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public Point PointToScreen(Point p)
{
return new Point();
}
}
}

1
tests/Perspex.Controls.UnitTests/TreeViewTests.cs

@ -8,6 +8,7 @@ using Perspex.Controls.Presenters;
using Perspex.Controls.Templates;
using Perspex.Input;
using Perspex.LogicalTree;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Controls.UnitTests

1
tests/Perspex.Markup.UnitTests/ControlLocatorTests.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using Perspex.Controls;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Markup.UnitTests

1
tests/Perspex.Markup.Xaml.UnitTests/Data/BindingTests_ElementName.cs

@ -3,6 +3,7 @@
using Perspex.Controls;
using Perspex.Markup.Xaml.Data;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Markup.Xaml.UnitTests.Data

8
tests/Perspex.Markup.Xaml.UnitTests/Perspex.Markup.Xaml.UnitTests.csproj

@ -129,6 +129,10 @@
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project>
<Name>Perspex.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Application\Perspex.Application.csproj">
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project>
<Name>Perspex.Application</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
@ -165,6 +169,10 @@
<Project>{3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}</Project>
<Name>Perspex.Themes.Default</Name>
</ProjectReference>
<ProjectReference Include="..\Perspex.UnitTests\Perspex.UnitTests.csproj">
<Project>{88060192-33d5-4932-b0f9-8bd2763e857d}</Project>
<Name>Perspex.UnitTests</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

67
tests/Perspex.Markup.Xaml.UnitTests/TestRoot.cs

@ -1,67 +0,0 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Perspex.Controls;
using Perspex.Platform;
using Perspex.Rendering;
using Perspex.Styling;
namespace Perspex.Markup.Xaml.UnitTests
{
public class TestRoot : Decorator, IRenderRoot, INameScope, IStyleRoot
{
private readonly NameScope _nameScope = new NameScope();
event EventHandler<NameScopeEventArgs> INameScope.Registered
{
add { _nameScope.Registered += value; ++NameScopeRegisteredSubscribers; }
remove { _nameScope.Registered -= value; --NameScopeRegisteredSubscribers; }
}
public event EventHandler<NameScopeEventArgs> Unregistered
{
add { _nameScope.Unregistered += value; ++NameScopeUnregisteredSubscribers; }
remove { _nameScope.Unregistered -= value; --NameScopeUnregisteredSubscribers; }
}
public int NameScopeRegisteredSubscribers { get; private set; }
public int NameScopeUnregisteredSubscribers { get; private set; }
public IRenderTarget RenderTarget
{
get { throw new NotImplementedException(); }
}
public IRenderQueueManager RenderQueueManager
{
get { throw new NotImplementedException(); }
}
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public Point PointToScreen(Point p)
{
throw new NotImplementedException();
}
public void Register(string name, object element)
{
_nameScope.Register(name, element);
}
public object Find(string name)
{
return _nameScope.Find(name);
}
public void Unregister(string name)
{
_nameScope.Unregister(name);
}
}
}

5
tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj

@ -104,7 +104,6 @@
<Compile Include="TestControlBase.cs" />
<Compile Include="TestObservable.cs" />
<Compile Include="TestObserver.cs" />
<Compile Include="TestRoot.cs" />
<Compile Include="TestSelectors.cs" />
<Compile Include="TestSubject.cs" />
<Compile Include="TestTemplatedControl.cs" />
@ -142,6 +141,10 @@
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\Perspex.UnitTests\Perspex.UnitTests.csproj">
<Project>{88060192-33d5-4932-b0f9-8bd2763e857d}</Project>
<Name>Perspex.UnitTests</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />

1
tests/Perspex.Styling.UnitTests/StyleTests.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Reactive.Subjects;
using Perspex.Controls;
using Perspex.UnitTests;
using Xunit;
namespace Perspex.Styling.UnitTests

39
tests/Perspex.Styling.UnitTests/TestRoot.cs

@ -1,39 +0,0 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Moq;
using Perspex.Controls;
using Perspex.Layout;
using Perspex.Platform;
using Perspex.Rendering;
namespace Perspex.Styling.UnitTests
{
internal class TestRoot : Decorator, ILayoutRoot, IRenderRoot, IStyleRoot
{
public Size ClientSize => new Size(100, 100);
public Size MaxClientSize => Size.Infinity;
public IRenderTarget RenderTarget
{
get { throw new NotImplementedException(); }
}
public IRenderQueueManager RenderQueueManager
{
get { throw new NotImplementedException(); }
}
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public Point PointToScreen(Point p)
{
return new Point();
}
}
}

1
tests/Perspex.UnitTests/Perspex.UnitTests.csproj

@ -70,6 +70,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="TestRoot.cs" />
<Compile Include="TestServices.cs" />
<Compile Include="UnitTestApplication.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />

37
tests/Perspex.Markup.UnitTests/TestRoot.cs → tests/Perspex.UnitTests/TestRoot.cs

@ -3,13 +3,14 @@
using System;
using Perspex.Controls;
using Perspex.Layout;
using Perspex.Platform;
using Perspex.Rendering;
using Perspex.Styling;
namespace Perspex.Markup.UnitTests
namespace Perspex.UnitTests
{
public class TestRoot : Decorator, IRenderRoot, INameScope, IStyleRoot
public class TestRoot : Decorator, ILayoutRoot, INameScope, IRenderRoot, IStyleRoot
{
private readonly NameScope _nameScope = new NameScope();
@ -29,37 +30,31 @@ namespace Perspex.Markup.UnitTests
public int NameScopeUnregisteredSubscribers { get; private set; }
public IRenderTarget RenderTarget
{
get { throw new NotImplementedException(); }
}
public Size ClientSize => new Size(100, 100);
public IRenderQueueManager RenderQueueManager
{
get { throw new NotImplementedException(); }
}
public Size MaxClientSize => Size.Infinity;
public Point PointToClient(Point p)
{
throw new NotImplementedException();
}
public ILayoutManager LayoutManager => PerspexLocator.Current.GetService<ILayoutManager>();
public Point PointToScreen(Point p)
{
throw new NotImplementedException();
}
public IRenderTarget RenderTarget => null;
public IRenderQueueManager RenderQueueManager => null;
public Point PointToClient(Point p) => p;
public Point PointToScreen(Point p) => p;
public void Register(string name, object element)
void INameScope.Register(string name, object element)
{
_nameScope.Register(name, element);
}
public object Find(string name)
object INameScope.Find(string name)
{
return _nameScope.Find(name);
}
public void Unregister(string name)
void INameScope.Unregister(string name)
{
_nameScope.Unregister(name);
}

65
tests/Perspex.UnitTests/TestTemplatedRoot.cs

@ -0,0 +1,65 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Perspex.Controls;
using Perspex.Controls.Presenters;
using Perspex.Controls.Templates;
using Perspex.Layout;
using Perspex.Platform;
using Perspex.Rendering;
using Perspex.Styling;
namespace Perspex.UnitTests
{
public class TestTemplatedRoot : ContentControl, ILayoutRoot, INameScope, IRenderRoot, IStyleRoot
{
private readonly NameScope _nameScope = new NameScope();
public TestTemplatedRoot()
{
Template = new FuncControlTemplate<TestTemplatedRoot>(x => new ContentPresenter());
}
public event EventHandler<NameScopeEventArgs> Registered
{
add { _nameScope.Registered += value; }
remove { _nameScope.Registered -= value; }
}
public event EventHandler<NameScopeEventArgs> Unregistered
{
add { _nameScope.Unregistered += value; }
remove { _nameScope.Unregistered -= value; }
}
public Size ClientSize => new Size(100, 100);
public Size MaxClientSize => Size.Infinity;
public ILayoutManager LayoutManager => PerspexLocator.Current.GetService<ILayoutManager>();
public IRenderTarget RenderTarget => null;
public IRenderQueueManager RenderQueueManager => null;
public Point PointToClient(Point p) => p;
public Point PointToScreen(Point p) => p;
void INameScope.Register(string name, object element)
{
_nameScope.Register(name, element);
}
object INameScope.Find(string name)
{
return _nameScope.Find(name);
}
void INameScope.Unregister(string name)
{
_nameScope.Unregister(name);
}
}
}
Loading…
Cancel
Save