using Annulus; using Azimuth; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; namespace Glass.UnitTests { public class RectAggregatorTests : TestFixture { public void NewRowBottomNoMargin() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); Rect row = aggregator.NewRow(5); CheckEqual(Rect.FromPositionAndSize(new Vector(0, 10), new Vector(10, 5)), row); CheckEqual(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 15)), aggregator.Rect); } public void NewRowBottomWithMargin() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(3, 4)); Rect row = aggregator.NewRow(5); CheckEqual(Rect.FromPositionAndSize(new Vector(0, 14), new Vector(10, 5)), row); CheckEqual(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 19)), aggregator.Rect); } public void NewRowBottomChained() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(0, 2)); Rect row1 = aggregator.NewRow(5); Rect row2 = aggregator.NewRow(3); CheckEqual(Rect.FromPositionAndSize(new Vector(0, 12), new Vector(10, 5)), row1); CheckEqual(Rect.FromPositionAndSize(new Vector(0, 19), new Vector(10, 3)), row2); } public void NewRowTopNoMargin() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); Rect row = aggregator.NewRow(5, VerticalJustification.Top); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -5), new Vector(10, 5)), row); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -5), new Vector(10, 15)), aggregator.Rect); } public void NewRowTopWithMargin() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(3, 4)); Rect row = aggregator.NewRow(5, VerticalJustification.Top); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -9), new Vector(10, 5)), row); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -9), new Vector(10, 19)), aggregator.Rect); } public void NewRowTopChained() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(0, 2)); Rect row1 = aggregator.NewRow(5, VerticalJustification.Top); Rect row2 = aggregator.NewRow(3, VerticalJustification.Top); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -7), new Vector(10, 5)), row1); CheckEqual(Rect.FromPositionAndSize(new Vector(0, -12), new Vector(10, 3)), row2); } public void NewColRightNoMargin() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); Rect col = aggregator.NewCol(5); CheckEqual(Rect.FromPositionAndSize(new Vector(10, 0), new Vector(5, 10)), col); CheckEqual(Rect.FromPositionAndSize(Vector.Zero, new Vector(15, 10)), aggregator.Rect); } public void NewColRightWithMargin() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(3, 4)); Rect col = aggregator.NewCol(5); CheckEqual(Rect.FromPositionAndSize(new Vector(13, 0), new Vector(5, 10)), col); CheckEqual(Rect.FromPositionAndSize(Vector.Zero, new Vector(18, 10)), aggregator.Rect); } public void NewColLeftNoMargin() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); Rect col = aggregator.NewCol(5, HorizontalJustification.Left); CheckEqual(Rect.FromPositionAndSize(new Vector(-5, 0), new Vector(5, 10)), col); CheckEqual(Rect.FromPositionAndSize(new Vector(-5, 0), new Vector(15, 10)), aggregator.Rect); } public void NewColLeftWithMargin() { var aggregator = new RectAggregator( Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10)), new Vector(3, 4)); Rect col = aggregator.NewCol(5, HorizontalJustification.Left); CheckEqual(Rect.FromPositionAndSize(new Vector(-8, 0), new Vector(5, 10)), col); CheckEqual(Rect.FromPositionAndSize(new Vector(-8, 0), new Vector(18, 10)), aggregator.Rect); } public void NewRowThenCol() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); Rect row = aggregator.NewRow(5); Rect col = aggregator.NewCol(5); CheckEqual(Rect.FromPositionAndSize(new Vector(0, 10), new Vector(10, 5)), row); CheckEqual(Rect.FromPositionAndSize(new Vector(10, 0), new Vector(5, 15)), col); } public void NewRowUnknownJustification() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); CheckThrow(); aggregator.NewRow(5, VerticalJustification.None); } public void NewColUnknownJustification() { var aggregator = new RectAggregator(Rect.FromPositionAndSize(Vector.Zero, new Vector(10, 10))); CheckThrow(); aggregator.NewCol(5, HorizontalJustification.None); } } }