public void ArrangeTest() { MyGrid g = new MyGrid(); RowDefinition rdef; ColumnDefinition cdef; rdef = new RowDefinition(); rdef.Height = new GridLength(50); g.RowDefinitions.Add(rdef); cdef = new ColumnDefinition(); cdef.Width = new GridLength(100); g.ColumnDefinitions.Add(cdef); g.Margin = new Thickness(5); var r = new Border(); MyContentControl mc = new MyContentControl { Content = r }; Grid.SetRow(mc, 0); Grid.SetColumn(mc, 0); g.Children.Add(mc); g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); g.CheckMeasureArgs("#MeasureOverrideArg", new Size(100, 50)); g.Reset(); Assert.AreEqual(new Size(0, 0), new Size(r.ActualWidth, r.ActualHeight), "r actual after measure"); Assert.AreEqual(new Size(0, 0), new Size(g.ActualWidth, g.ActualHeight), "g actual after measure"); g.Arrange(new Rect(0, 0, g.DesiredSize.Width, g.DesiredSize.Height)); g.CheckRowHeights("#RowHeights", 50); Assert.AreEqual(new Size(0, 0), r.DesiredSize, "r desired 0"); Assert.AreEqual(new Size(110, 60), g.DesiredSize, "g desired 1"); Assert.AreEqual(new Rect(0, 0, 100, 50).ToString(), LayoutInformation.GetLayoutSlot(r).ToString(), "slot"); Assert.AreEqual(new Size(100, 50), new Size(r.ActualWidth, r.ActualHeight), "r actual after arrange"); Assert.AreEqual(new Size(100, 50), new Size(g.ActualWidth, g.ActualHeight), "g actual after arrange"); }
public void ArrangeDefaultDefinitions() { MyGrid grid = new MyGrid(); Border b = new Border(); b.Background = new SolidColorBrush(Colors.Red); Border b2 = new Border(); b2.Background = new SolidColorBrush(Colors.Green); b2.Width = b2.Height = 50; grid.Children.Add(new MyContentControl { Content = b }); grid.Children.Add(new MyContentControl { Content = b2 }); grid.Measure(new Size(inf, inf)); grid.CheckMeasureArgs("#MeasureOverrideArg", new Size(inf, inf), new Size(inf, inf)); grid.Reset(); grid.Measure(new Size(400, 300)); grid.CheckMeasureArgs("#MeasureOverrideArg 2", new Size(400, 300), new Size(400, 300)); grid.Reset(); grid.Width = 100; grid.Height = 100; grid.Measure(new Size(400, 300)); grid.CheckMeasureArgs("#MeasureOverrideArg 3", new Size(100, 100), new Size(100, 100)); grid.Reset(); grid.Arrange(new Rect(0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height)); Assert.AreEqual(new Size(100, 100), grid.RenderSize, "grid render"); Assert.AreEqual(new Size(100, 100), b.RenderSize, "b render"); Assert.AreEqual(new Size(50, 50), b2.RenderSize, "b2 render"); }
public void ExpandInArrange_OutsideTree_NoParent_UnfixedSize () { // We always expand star rows if we're not in the live tree // with no parent // Measure with infinity and check results. MyGrid grid = new MyGrid (); grid.AddRows (Star); grid.AddColumns (Star); grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1); grid.Measure (Infinity); grid.CheckMeasureArgs ("#1", Infinity); grid.CheckMeasureResult ("#2", new Size (50, 50)); Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3"); // When we pass in the desired size as the arrange arg, // the rows/cols use that as their height/width grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height)); grid.CheckArrangeArgs ("#4", grid.DesiredSize); grid.CheckArrangeResult ("#5", grid.DesiredSize); grid.CheckRowHeights ("#6", grid.DesiredSize.Height); grid.CheckColWidths ("#7", grid.DesiredSize.Width); // If we pass in twice the desired size, the rows/cols consume that too grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckMeasureArgs ("#8"); // No remeasures grid.CheckArrangeArgs ("#9", new Size (100, 100)); grid.CheckArrangeResult ("#10", new Size (100, 100)); grid.CheckRowHeights ("#11", 100); grid.CheckColWidths ("#12", 100); // If we measure with a finite size, the rows/cols still expand // to consume the available space grid.Reset (); grid.Measure (new Size (1000, 1000)); grid.CheckMeasureArgs ("#13", new Size (1000, 1000)); grid.CheckMeasureResult ("#14", new Size (50, 50)); Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#15"); // When we pass in the desired size as the arrange arg, // the rows/cols use that as their height/width grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height)); grid.CheckArrangeArgs ("#16", grid.DesiredSize); grid.CheckArrangeResult ("#17", grid.DesiredSize); grid.CheckRowHeights ("#18", grid.DesiredSize.Height); grid.CheckColWidths ("#19", grid.DesiredSize.Width); // If we pass in twice the desired size, the rows/cols consume that too grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckMeasureArgs ("#20"); // No remeasures grid.CheckArrangeArgs ("#21", new Size (100, 100)); grid.CheckArrangeResult ("#22", new Size (100, 100)); grid.CheckRowHeights ("#23", 100); grid.CheckColWidths ("#24", 100); }
public void StarRows5 () { GridLength oneStar = new GridLength (1, GridUnitType.Star); MyGrid grid = new MyGrid { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; grid.AddRows (oneStar, oneStar, oneStar); grid.AddColumns (oneStar, oneStar, oneStar); grid.AddChild (new MyContentControl (240, 240), 0, 0, 3, 3); grid.AddChild (new MyContentControl (150, 150), 0, 0, 1, 1); TestPanel.Children.Add (grid); grid.Measure (new Size (240, 240)); grid.Arrange (new Rect (0, 0, 120, 120)); grid.CheckRowHeights ("#1", 80, 80, 80); grid.CheckMeasureArgs ("#2", new Size (240, 240), new Size (80, 80)); grid.CheckMeasureResult ("#3", new Size (240, 240), new Size (80, 80)); grid.CheckDesired ("#4", new Size (240, 240), new Size (80, 80)); grid.CheckMeasureOrder ("#5", 0, 1); }
public void ExpandInArrange () { // Measure with infinity and check results. MyGrid grid = new MyGrid (); grid.AddRows (Star); grid.AddColumns (Star); grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1); grid.Measure (Infinity); grid.CheckMeasureArgs ("#1", Infinity); grid.CheckMeasureResult ("#2", new Size (50, 50)); Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3"); // Check that everything is as expected when we pass in DesiredSize as the argument to Arrange grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height)); grid.CheckArrangeArgs ("#4", grid.DesiredSize); grid.CheckArrangeResult ("#5", grid.DesiredSize); grid.CheckRowHeights ("#6", grid.DesiredSize.Height); grid.CheckColWidths ("#7", grid.DesiredSize.Width); grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckMeasureArgs ("#8"); // No remeasures grid.CheckArrangeArgs ("#9", new Size (100, 100)); grid.CheckArrangeResult ("#10", new Size (100, 100)); grid.CheckRowHeights ("#11", 100); grid.CheckColWidths ("#12", 100); }
public void ExpandStars_UnfixedSize () { // If a width/height is *not* set on the grid, it doesn't expand stars. var canvas = new Canvas { Width = 120, Height = 120 }; PanelPoker poker = new PanelPoker (); MyGrid grid = new MyGrid { Name = "TEDDY" }; grid.AddRows (Star, Star, Star); grid.AddColumns (Star, Star, Star); canvas.Children.Add (poker); poker.Grid = grid; grid.AddChild (new MyContentControl (100, 100), 1, 1, 1, 1); CreateAsyncTest (canvas, () => { Assert.AreEqual (Infinity, poker.MeasureArgs [0], "#1"); Assert.AreEqual (new Size (100, 100), poker.MeasureResults [0], "#2"); Assert.AreEqual (new Size (100, 100), poker.ArrangeArgs [0], "#3"); Assert.AreEqual (new Size (100, 100), poker.ArrangeResults [0], "#4"); grid.CheckRowHeights ("#5", 0, 100, 0); grid.CheckColWidths ("#6", 0, 100, 0); grid.CheckMeasureArgs ("#7", Infinity); grid.CheckMeasureResult ("#8", new Size (100, 100)); grid.CheckArrangeArgs ("#9", new Size (100, 100)); grid.CheckArrangeResult ("#10", new Size (100, 100)); // Do not expand if we already consume 100 px grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckArrangeArgs ("#11"); // If we give extra space, we expand the rows. grid.Arrange (new Rect (0, 0, 500, 500)); grid.CheckRowHeights ("#12", 167, 167, 166); grid.CheckColWidths ("#13", 167, 167, 166); grid.CheckArrangeArgs ("#14", new Size (167, 167)); grid.CheckArrangeResult ("#15", new Size (167, 167)); } ); }
public void ExpandInArrange_CanvasParent () { // Measure with infinity and check results. MyGrid grid = new MyGrid (); grid.AddRows (Star); grid.AddColumns (Star); grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1); var parent = new Canvas (); parent.Children.Add (grid); CreateAsyncTest (parent, () => { grid.Reset (); TestPanel.Measure (Infinity); // Nothing is measured as the grid always uses (Inf, Inf) to measure children. grid.CheckMeasureArgs ("#1"); Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3"); grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckMeasureArgs ("#8"); // No remeasures grid.CheckArrangeArgs ("#9", new Size (100, 100)); grid.CheckArrangeResult ("#10", new Size (100, 100)); grid.CheckRowHeights ("#11", 100); grid.CheckColWidths ("#12", 100); // If we measure with a finite size, the rows/cols still expand // to consume the available space grid.Reset (); grid.Measure (new Size (1000, 1000)); grid.CheckMeasureArgs ("#13", new Size (1000, 1000)); grid.CheckMeasureResult ("#14", new Size (50, 50)); Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#15"); // When we pass in the desired size as the arrange arg, // the rows/cols use that as their height/width grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height)); grid.CheckArrangeArgs ("#16", grid.DesiredSize); grid.CheckArrangeResult ("#17", grid.DesiredSize); grid.CheckRowHeights ("#18", grid.DesiredSize.Height); grid.CheckColWidths ("#19", grid.DesiredSize.Width); // If we pass in twice the desired size, the rows/cols consume that too grid.Reset (); grid.Arrange (new Rect (0, 0, 100, 100)); grid.CheckMeasureArgs ("#20"); // No remeasures grid.CheckArrangeArgs ("#21", new Size (100, 100)); grid.CheckArrangeResult ("#22", new Size (100, 100)); grid.CheckRowHeights ("#23", 100); grid.CheckColWidths ("#24", 100); }); }
public void ArrangeTest () { MyGrid g = new MyGrid (); RowDefinition rdef; ColumnDefinition cdef; rdef = new RowDefinition (); rdef.Height = new GridLength (50); g.RowDefinitions.Add (rdef); cdef = new ColumnDefinition (); cdef.Width = new GridLength (100); g.ColumnDefinitions.Add (cdef); g.Margin = new Thickness (5); var r = new Border (); MyContentControl mc = new MyContentControl { Content = r }; Grid.SetRow (mc, 0); Grid.SetColumn (mc, 0); g.Children.Add (mc); g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity)); g.CheckMeasureArgs ("#MeasureOverrideArg", new Size (100, 50)); g.Reset (); Assert.AreEqual (new Size (0,0), new Size (r.ActualWidth, r.ActualHeight), "r actual after measure"); Assert.AreEqual (new Size (0,0), new Size (g.ActualWidth, g.ActualHeight), "g actual after measure"); g.Arrange (new Rect (0,0,g.DesiredSize.Width,g.DesiredSize.Height)); g.CheckRowHeights ("#RowHeights", 50); Assert.AreEqual (new Size (0,0), r.DesiredSize, "r desired 0"); Assert.AreEqual (new Size (110,60), g.DesiredSize, "g desired 1"); Assert.AreEqual (new Rect (0,0,100,50).ToString (), LayoutInformation.GetLayoutSlot (r).ToString(), "slot"); Assert.AreEqual (new Size (100,50), new Size (r.ActualWidth, r.ActualHeight), "r actual after arrange"); Assert.AreEqual (new Size (100,50), new Size (g.ActualWidth, g.ActualHeight), "g actual after arrange"); }
public void ArrangeDefaultDefinitions () { MyGrid grid = new MyGrid (); Border b = new Border (); b.Background = new SolidColorBrush (Colors.Red); Border b2 = new Border (); b2.Background = new SolidColorBrush (Colors.Green); b2.Width = b2.Height = 50; grid.Children.Add (new MyContentControl { Content = b }); grid.Children.Add (new MyContentControl { Content = b2 }); grid.Measure (new Size (inf, inf)); grid.CheckMeasureArgs ("#MeasureOverrideArg", new Size (inf, inf), new Size (inf, inf)); grid.Reset (); grid.Measure (new Size (400, 300)); grid.CheckMeasureArgs ("#MeasureOverrideArg 2", new Size (400, 300), new Size (400, 300)); grid.Reset (); grid.Width = 100; grid.Height = 100; grid.Measure (new Size (400,300)); grid.CheckMeasureArgs ("#MeasureOverrideArg 3", new Size (100, 100), new Size (100, 100)); grid.Reset (); grid.Arrange (new Rect (0,0,grid.DesiredSize.Width,grid.DesiredSize.Height)); Assert.AreEqual (new Size (100,100), grid.RenderSize,"grid render"); Assert.AreEqual (new Size (100,100), b.RenderSize, "b render"); Assert.AreEqual (new Size (50,50), b2.RenderSize, "b2 render"); }