Browse Source

Fix failing layout test.

pull/39/head
Steven Kirk 12 years ago
parent
commit
552421f8d2
  1. 7
      Perspex.Layout/Layoutable.cs
  2. 30
      Tests/Perspex.Layout.UnitTests/FullLayoutTests.cs
  3. 8
      Tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj

7
Perspex.Layout/Layoutable.cs

@ -198,9 +198,11 @@ namespace Perspex.Layout
throw new InvalidOperationException("Invalid Arrange rectangle.");
}
if (!this.DesiredSize.HasValue)
// If the measure was invalidated during an arrange pass, wait for the arrange pass to
// be re-run.
if (!this.IsMeasureValid)
{
throw new InvalidOperationException("Arrange called before Measure.");
return;
}
if (force || !this.IsArrangeValid || this.previousArrange != rect)
@ -233,6 +235,7 @@ namespace Perspex.Layout
this.IsArrangeValid = false;
this.previousMeasure = null;
this.previousArrange = null;
this.DesiredSize = null;
if (parent != null && IsResizable(parent))
{

30
Tests/Perspex.Layout.UnitTests/FullLayoutTests.cs

@ -6,12 +6,15 @@
namespace Perspex.Layout.UnitTests
{
using System.Diagnostics;
using System.IO;
using System.Linq;
using Moq;
using Perspex.Controls;
using Perspex.Controls.Presenters;
using Perspex.Controls.Primitives;
using Perspex.Controls.Templates;
using Perspex.Diagnostics;
using Perspex.Input;
using Perspex.Platform;
using Perspex.Rendering;
@ -62,6 +65,30 @@ namespace Perspex.Layout.UnitTests
}
}
class TestLogger : ILogger
{
StreamWriter s;
public TestLogger()
{
s = new StreamWriter(new FileStream(@"D:\temp\layout.txt", FileMode.Create, FileAccess.ReadWrite));
}
public LogLevel Level
{
get;
set;
}
public void Write(string message, LogLevel logLevel)
{
if ((int)logLevel < (int)Level) return;
s.WriteLine(message);
s.Flush();
}
}
[Fact]
public void Test_ScrollViewer_With_TextBlock()
{
@ -69,6 +96,9 @@ namespace Perspex.Layout.UnitTests
{
this.RegisterServices();
LogManager.Enable(new TestLogger());
LogManager.Instance.LogLayoutMessages = true;
ScrollViewer scrollViewer;
TextBlock textBlock;

8
Tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj

@ -67,6 +67,10 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\NGenerics\NGenerics.csproj">
<Project>{415e048e-4611-4815-9cf2-d774e29079ac}</Project>
<Name>NGenerics</Name>
</ProjectReference>
<ProjectReference Include="..\..\Perspex.Animation\Perspex.Animation.csproj">
<Project>{d211e587-d8bc-45b9-95a4-f297c8fa5200}</Project>
<Name>Perspex.Animation</Name>
@ -79,6 +83,10 @@
<Project>{d2221c82-4a25-4583-9b43-d791e3f6820c}</Project>
<Name>Perspex.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<Project>{7062ae20-5dcc-4442-9645-8195bdece63e}</Project>
<Name>Perspex.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\..\Perspex.Input\Perspex.Input.csproj">
<Project>{62024b2d-53eb-4638-b26b-85eeaa54866e}</Project>
<Name>Perspex.Input</Name>

Loading…
Cancel
Save