| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using NUnit.Framework;
- using QuestPDF.Elements;
- using QuestPDF.Fluent;
- using QuestPDF.Helpers;
- using QuestPDF.Infrastructure;
- namespace QuestPDF.UnitTests;
- [TestFixture]
- public class RowTests
- {
- #region Spacing
-
- [TestCase(float.MinValue)]
- [TestCase(-5)]
- [TestCase(-float.Epsilon)]
- public void NegativeSpacingThrowsException(float spacingValue)
- {
- var exception = Assert.Throws<ArgumentOutOfRangeException>(() =>
- {
- EmptyContainer
- .Create()
- .Row(row =>
- {
- row.Spacing(spacingValue);
- });
- });
-
- Assert.That(exception.Message, Is.EqualTo("The row spacing cannot be negative. (Parameter 'spacing')"));
- }
-
- [TestCase(0)]
- [TestCase(float.Epsilon)]
- [TestCase(10)]
- public void ValidSpacingIsCorrectlyApplied(float spacingValue)
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.Spacing(spacingValue);
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Spacing, Is.EqualTo(spacingValue));
- }
-
- [Test]
- public void SpacingSupportsUnitConversion()
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.Spacing(5, Unit.Inch);
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Spacing, Is.EqualTo(360));
- }
-
- #endregion
-
- #region Relative Item
-
- [TestCase(-10)]
- [TestCase(-float.Epsilon)]
- [TestCase(0)]
- public void RelativeItemCannotHaveSizeSmallerOrEqualToZero(float size)
- {
- var exception = Assert.Throws<ArgumentOutOfRangeException>(() =>
- {
- EmptyContainer
- .Create()
- .Row(row =>
- {
- row.RelativeItem(size);
- });
- });
- Assert.That(exception?.Message, Is.EqualTo("The relative item size must be greater than zero. (Parameter 'size')"));
- }
-
- [TestCase(float.Epsilon)]
- [TestCase(1)]
- [TestCase(5)]
- public void RelativeItemMustHaveSizeLargerThanZero(float size)
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.RelativeItem(size);
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Items.Count, Is.EqualTo(1));
-
- var firstItem = rowContainer?.Items.Single();
- Assert.That(firstItem.Type, Is.EqualTo(RowItemType.Relative));
- Assert.That(firstItem.Size, Is.EqualTo(size));
- }
-
- #endregion
-
- #region Constant Item
-
- [TestCase(-10)]
- [TestCase(-float.Epsilon)]
- public void ConstantItemCannotHaveSizeSmallerThanZero(float size)
- {
- var exception = Assert.Throws<ArgumentOutOfRangeException>(() =>
- {
- EmptyContainer
- .Create()
- .Row(row =>
- {
- row.ConstantItem(size);
- });
- });
- Assert.That(exception?.Message, Is.EqualTo("The constant item size cannot be negative. (Parameter 'size')"));
- }
-
- [TestCase(0)]
- [TestCase(100)]
- public void ConstantItemMustHaveSizeLargerOrEqualToZero(float size)
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.ConstantItem(size);
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Items.Count, Is.EqualTo(1));
-
- var firstItem = rowContainer?.Items.Single();
- Assert.That(firstItem.Type, Is.EqualTo(RowItemType.Constant));
- Assert.That(firstItem.Size, Is.EqualTo(size));
- }
-
- [Test]
- public void ConstantItemSupportsUnitConversion()
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.ConstantItem(2, Unit.Inch);
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Items.Count, Is.EqualTo(1));
-
- var firstItem = rowContainer?.Items.Single();
- Assert.That(firstItem.Type, Is.EqualTo(RowItemType.Constant));
- Assert.That(firstItem.Size, Is.EqualTo(144));
- }
-
- #endregion
-
- [Test]
- public void CompanionHints()
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- row.RelativeItem(3);
- row.ConstantItem(2, Unit.Inch);
- row.AutoItem();
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Items.Count, Is.EqualTo(3));
-
- var items = rowContainer?.Items;
-
- Assert.That(items[0].GetCompanionHint(), Is.EqualTo("Relative 3"));
- Assert.That(items[1].GetCompanionHint(), Is.EqualTo("Constant 144"));
- Assert.That(items[2].GetCompanionHint(), Is.EqualTo("Auto"));
- }
-
- [Test]
- [Repeat(10)]
- public void RowSupportsStatefulOperations()
- {
- var container = EmptyContainer.Create();
-
- container.Row(row =>
- {
- foreach (var i in Enumerable.Range(0, 10))
- row.RelativeItem();
- });
-
- var rowContainer = container.Child as Row;
- Assert.That(rowContainer?.Items.Count, Is.EqualTo(10));
-
- rowContainer.ResetState();
- Assert.That(rowContainer.GetState(), Is.EquivalentTo(new bool[10]));
-
- var newState = Enumerable
- .Range(0, 10)
- .Select(x => Random.Shared.Next() % 2 == 0)
- .ToArray();
-
- rowContainer.SetState(newState);
- Assert.That(rowContainer.GetState(), Is.EquivalentTo(newState));
-
- rowContainer.ResetState();
- Assert.That(rowContainer.GetState(), Is.EquivalentTo(new bool[10]));
- }
- }
|