Browse Source

Added TemplatedControl tests.

pull/4/head
Steven Kirk 12 years ago
parent
commit
52643eaadd
  1. 100
      Perspex.UnitTests/Controls/TemplatedControlTests.cs
  2. 1
      Perspex.UnitTests/Perspex.UnitTests.csproj
  3. 2
      Perspex/Controls/TemplatedControl.cs

100
Perspex.UnitTests/Controls/TemplatedControlTests.cs

@ -0,0 +1,100 @@
// -----------------------------------------------------------------------
// <copyright file="TemplatedControlTests.cs" company="Steven Kirk">
// Copyright 2013 MIT Licence. See licence.md for more information.
// </copyright>
// -----------------------------------------------------------------------
namespace Perspex.UnitTests.Controls
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Perspex.Controls;
[TestClass]
public class TemplatedControlTests
{
[TestMethod]
public void Template_Doesnt_Get_Executed_On_Set()
{
bool executed = false;
var template = new ControlTemplate(_ =>
{
executed = true;
return new Control();
});
var target = new TemplatedControl
{
Template = template,
};
Assert.IsFalse(executed);
}
[TestMethod]
public void Template_Gets_Executed_On_Reading_Visual_Children()
{
bool executed = false;
var template = new ControlTemplate(_ =>
{
executed = true;
return new Control();
});
var target = new TemplatedControl
{
Template = template,
};
var children = ((IVisual)target).VisualChildren.ToArray();
Assert.IsTrue(executed);
}
[TestMethod]
public void Template_Result_Becomes_Visual_Child()
{
Control templateResult = new Control();
var template = new ControlTemplate(_ =>
{
return templateResult;
});
var target = new TemplatedControl
{
Template = template,
};
var children = ((IVisual)target).VisualChildren.ToArray();
CollectionAssert.AreEqual(new[] { templateResult }, children);
}
[TestMethod]
public void TemplatedParent_Is_Set_On_Generated_Template()
{
Control templateResult = new Control();
var template = new ControlTemplate(_ =>
{
return templateResult;
});
var target = new TemplatedControl
{
Template = template,
};
var children = ((IVisual)target).VisualChildren.ToArray();
Assert.AreEqual(target, templateResult.TemplatedParent);
}
}
}

1
Perspex.UnitTests/Perspex.UnitTests.csproj

@ -69,6 +69,7 @@
</Choose>
<ItemGroup>
<Compile Include="Controls\ControlTests.cs" />
<Compile Include="Controls\TemplatedControlTests.cs" />
<Compile Include="PerspexPropertyTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="PerspexObjectTests.cs" />

2
Perspex/Controls/TemplatedControl.cs

@ -11,7 +11,7 @@ namespace Perspex.Controls
using System.Linq;
using Perspex.Media;
public abstract class TemplatedControl : Control, IVisual, ITemplatedControl
public class TemplatedControl : Control, IVisual, ITemplatedControl
{
public static readonly PerspexProperty<ControlTemplate> TemplateProperty =
PerspexProperty.Register<TemplatedControl, ControlTemplate>("Template");

Loading…
Cancel
Save