Ver código fonte

Add unit test for Leave event changing focus

tznind 2 anos atrás
pai
commit
ee85ddf141
1 arquivos alterados com 33 adições e 0 exclusões
  1. 33 0
      UnitTests/ViewTests.cs

+ 33 - 0
UnitTests/ViewTests.cs

@@ -4062,5 +4062,38 @@ This is a tes
 			Assert.False (view.IsKeyPress);
 			Assert.False (view.IsKeyPress);
 			Assert.True (view.IsKeyUp);
 			Assert.True (view.IsKeyUp);
 		}
 		}
+
+		[Fact, AutoInitShutdown]
+		public void SetHasFocus_Do_Not_Throws_If_OnLeave_Remove_Focused_Changing_To_Null ()
+		{
+			var view1Leave = false;
+			var subView1Leave = false;
+			var subView1subView1Leave = false;
+			var top = Application.Top;
+			var view1 = new View { CanFocus = true };
+			var subView1 = new View { CanFocus = true };
+			var subView1subView1 = new View { CanFocus = true };
+			view1.Leave += (e) => {
+				view1Leave = true;
+			};
+			subView1.Leave += (e) => {
+				subView1.Remove (subView1subView1);
+				subView1Leave = true;
+			};
+			view1.Add (subView1);
+			subView1subView1.Leave += (e) => {
+				// This is never invoked
+				subView1subView1Leave = true;
+			};
+			subView1.Add (subView1subView1);
+			var view2 = new View { CanFocus = true };
+			top.Add (view1, view2);
+			Application.Begin (top);
+
+			view2.SetFocus ();
+			Assert.True (view1Leave);
+			Assert.True (subView1Leave);
+			Assert.False (subView1subView1Leave);
+		}
 	}
 	}
 }
 }