summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests
diff options
context:
space:
mode:
authorwplong11 <wplong11@naver.com>2017-03-20 21:06:20 +0900
committerRui Marinho <me@ruimarinho.net>2017-03-20 12:06:20 +0000
commitf98e1525c15ca77ec9840c2b5c8020b1b320b141 (patch)
tree46bbe9afc82c275da3828f486dcf63821f7e2a0a /Xamarin.Forms.Core.UnitTests
parentce068193286c5fcebe3fe01fd5edfbbac88e4058 (diff)
downloadxamarin-forms-f98e1525c15ca77ec9840c2b5c8020b1b320b141.tar.gz
xamarin-forms-f98e1525c15ca77ec9840c2b5c8020b1b320b141.tar.bz2
xamarin-forms-f98e1525c15ca77ec9840c2b5c8020b1b320b141.zip
[Core] Fix internal children clear logic (#820)
* Fix InternalChildren clear logic * Improve InternalChildren clear logic * Add test code to verify InternalChildren clear logic * Add missing test cases * Improve time complexity of clear logic * Fix the test case where InvalidOperationException occurs. * Correct the name casing of the test case * Modify a wrong test code
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests')
-rw-r--r--Xamarin.Forms.Core.UnitTests/ContentFormUnitTests.cs17
-rw-r--r--Xamarin.Forms.Core.UnitTests/ContentViewUnitTest.cs17
-rw-r--r--Xamarin.Forms.Core.UnitTests/TemplatedPageUnitTests.cs31
-rw-r--r--Xamarin.Forms.Core.UnitTests/TemplatedViewUnitTests.cs31
-rw-r--r--Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj2
5 files changed, 97 insertions, 1 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/ContentFormUnitTests.cs b/Xamarin.Forms.Core.UnitTests/ContentFormUnitTests.cs
index 5b6f3e60..e52b5dbf 100644
--- a/Xamarin.Forms.Core.UnitTests/ContentFormUnitTests.cs
+++ b/Xamarin.Forms.Core.UnitTests/ContentFormUnitTests.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
@@ -64,5 +65,21 @@ namespace Xamarin.Forms.Core.UnitTests
Assert.AreEqual (context, toolbarItem.BindingContext);
}
+
+ [Test]
+ public void ContentPage_should_have_the_InternalChildren_correctly_when_Content_changed()
+ {
+ var sut = new ContentPage();
+ IList<Element> internalChildren = ((IControlTemplated)sut).InternalChildren;
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+
+ var expected = new View();
+ sut.Content = expected;
+
+ Assert.AreEqual(1, internalChildren.Count);
+ Assert.AreSame(expected, internalChildren[0]);
+ }
}
}
diff --git a/Xamarin.Forms.Core.UnitTests/ContentViewUnitTest.cs b/Xamarin.Forms.Core.UnitTests/ContentViewUnitTest.cs
index 73bb531b..5d7dd651 100644
--- a/Xamarin.Forms.Core.UnitTests/ContentViewUnitTest.cs
+++ b/Xamarin.Forms.Core.UnitTests/ContentViewUnitTest.cs
@@ -388,6 +388,21 @@ namespace Xamarin.Forms.Core.UnitTests
Assert.AreEqual ("Foo", child.BindingContext);
}
- }
+ [Test]
+ public void ContentView_should_have_the_InternalChildren_correctly_when_Content_changed()
+ {
+ var sut = new ContentView();
+ IList<Element> internalChildren = ((IControlTemplated)sut).InternalChildren;
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+
+ var expected = new View();
+ sut.Content = expected;
+
+ Assert.AreEqual(1, internalChildren.Count);
+ Assert.AreSame(expected, internalChildren[0]);
+ }
+ }
}
diff --git a/Xamarin.Forms.Core.UnitTests/TemplatedPageUnitTests.cs b/Xamarin.Forms.Core.UnitTests/TemplatedPageUnitTests.cs
new file mode 100644
index 00000000..306abf0d
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/TemplatedPageUnitTests.cs
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class TemplatedPageUnitTests : BaseTestFixture
+ {
+ [Test]
+ public void TemplatedPage_should_have_the_InternalChildren_correctly_when_ControlTemplate_changed()
+ {
+ var sut = new TemplatedPage();
+ IList<Element> internalChildren = ((IControlTemplated)sut).InternalChildren;
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+
+ sut.ControlTemplate = new ControlTemplate(typeof(ExpectedView));
+
+ Assert.AreEqual(1, internalChildren.Count);
+ Assert.IsInstanceOf<ExpectedView>(internalChildren[0]);
+ }
+
+ private class ExpectedView : View
+ {
+ public ExpectedView()
+ {
+ }
+ }
+ }
+}
diff --git a/Xamarin.Forms.Core.UnitTests/TemplatedViewUnitTests.cs b/Xamarin.Forms.Core.UnitTests/TemplatedViewUnitTests.cs
new file mode 100644
index 00000000..6255edaf
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/TemplatedViewUnitTests.cs
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class TemplatedViewUnitTests : BaseTestFixture
+ {
+ [Test]
+ public void TemplatedView_should_have_the_InternalChildren_correctly_when_ControlTemplate_changed()
+ {
+ var sut = new TemplatedView();
+ IList<Element> internalChildren = ((IControlTemplated)sut).InternalChildren;
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+ internalChildren.Add(new VisualElement());
+
+ sut.ControlTemplate = new ControlTemplate(typeof(ExpectedView));
+
+ Assert.AreEqual(1, internalChildren.Count);
+ Assert.IsInstanceOf<ExpectedView>(internalChildren[0]);
+ }
+
+ private class ExpectedView : View
+ {
+ public ExpectedView()
+ {
+ }
+ }
+ }
+}
diff --git a/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj b/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj
index 243cbce3..8727b984 100644
--- a/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj
+++ b/Xamarin.Forms.Core.UnitTests/Xamarin.Forms.Core.UnitTests.csproj
@@ -80,6 +80,8 @@
<Compile Include="ColorUnitTests.cs" />
<Compile Include="CommandSourceTests.cs" />
<Compile Include="CommandTests.cs" />
+ <Compile Include="TemplatedViewUnitTests.cs" />
+ <Compile Include="TemplatedPageUnitTests.cs" />
<Compile Include="ContentFormUnitTests.cs" />
<Compile Include="ContraintTypeConverterTests.cs" />
<Compile Include="ControlTemplateTests.cs" />