From d7fec3c3f13b6d378fe3bd0d6dc571eda9e4fbca Mon Sep 17 00:00:00 2001 From: BDisp Date: Wed, 27 Mar 2024 15:43:55 +0000 Subject: [PATCH] Add unit test that proof setting TabIndex before all views are added, will have unexpected result. --- UnitTests/View/NavigationTests.cs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/UnitTests/View/NavigationTests.cs b/UnitTests/View/NavigationTests.cs index 653c447ef..773ab0f77 100644 --- a/UnitTests/View/NavigationTests.cs +++ b/UnitTests/View/NavigationTests.cs @@ -1312,6 +1312,32 @@ public class NavigationTests Assert.True (r.Subviews.IndexOf (v3) == 2); } + [Fact] + public void TabIndex_Invert_Order_Added_One_By_One_Does_Not_Do_What_Is_Expected () + { + var r = new View (); + var v1 = new View () { Id = "1", CanFocus = true }; + r.Add (v1); + v1.TabIndex = 2; + var v2 = new View () { Id = "2", CanFocus = true }; + r.Add (v2); + v2.TabIndex = 1; + var v3 = new View () { Id = "3", CanFocus = true }; + r.Add (v3); + v3.TabIndex = 0; + + Assert.False (r.TabIndexes.IndexOf (v1) == 2); + Assert.True (r.TabIndexes.IndexOf (v1) == 1); + Assert.False (r.TabIndexes.IndexOf (v2) == 1); + Assert.True (r.TabIndexes.IndexOf (v2) == 2); + // Only the last is in the expected index + Assert.True (r.TabIndexes.IndexOf (v3) == 0); + + Assert.True (r.Subviews.IndexOf (v1) == 0); + Assert.True (r.Subviews.IndexOf (v2) == 1); + Assert.True (r.Subviews.IndexOf (v3) == 2); + } + [Fact] public void TabIndex_Invert_Order_Mixed () {