public void TestArrangeOverride() { var rand = new Random(); var imageSize = new Vector3(100, 50, 0); var sprite = new Sprite { Region = new Rectangle(0, 0, (int)imageSize.X, (int)imageSize.Y), Borders = new Vector4(1, 2, 3, 4) }; var image = new ImageElement { Source = (SpriteFromTexture)sprite }; // Fixed sized image.StretchType = StretchType.None; image.Arrange(rand.NextVector3(), false); Assert.Equal(imageSize, image.RenderSize); // Uniform sized image.StretchType = StretchType.Uniform; image.Arrange(new Vector3(50), false); Assert.Equal(new Vector3(50, 25, 0), image.RenderSize); // Uniform to fill sized image.StretchType = StretchType.UniformToFill; image.Arrange(new Vector3(50), false); Assert.Equal(new Vector3(100, 50, 0), image.RenderSize); // Fill on stretch image.StretchType = StretchType.FillOnStretch; image.Arrange(new Vector3(50), false); Assert.Equal(new Vector3(50, 50, 0), image.RenderSize); // Fill image.StretchType = StretchType.Fill; image.Arrange(new Vector3(50), false); Assert.Equal(new Vector3(50, 50, 0), image.RenderSize); // Test there is no minimal size due to borders in arrange image.StretchType = StretchType.Fill; image.Arrange(new Vector3(), false); Assert.Equal(new Vector3(), image.RenderSize); // Test with infinite value for (var type = 0; type < 5; ++type) { TestArrangeOverrideInfiniteValues((StretchType)type); } // Test stretch directions image.StretchType = StretchType.Fill; image.StretchDirection = StretchDirection.DownOnly; image.Arrange(new Vector3(200, 300, 220), false); Assert.Equal(new Vector3(100, 50, 0), image.RenderSize); image.Arrange(new Vector3(20, 15, 30), false); Assert.Equal(new Vector3(20, 15, 0), image.RenderSize); image.StretchDirection = StretchDirection.UpOnly; image.Arrange(new Vector3(200, 300, 220), false); Assert.Equal(new Vector3(200, 300, 0), image.RenderSize); image.Arrange(new Vector3(20, 30, 22), false); Assert.Equal(new Vector3(100, 50, 0), image.RenderSize); }
private void TestArrangeOverrideInfiniteValues(StretchType stretch) { var imageSize = new Vector3(100, 50, 0); var sprite = new Sprite { Region = new Rectangle(0, 0, (int)imageSize.X, (int)imageSize.Y), Borders = new Vector4(1, 2, 3, 4) }; var image = new ImageElement { Source = (SpriteFromTexture)sprite, StretchType = stretch }; image.Arrange(new Vector3(float.PositiveInfinity), false); Assert.Equal(imageSize, image.RenderSize); image.Arrange(new Vector3(150, float.PositiveInfinity, 10), false); Assert.Equal(stretch == StretchType.None ? imageSize : new Vector3(150, 75, 0), image.RenderSize); }