public void SortedByString_GivenEmptyOrWhiteSpaceOnlyString_ThrowsArgumentException(string value)
        {
            // Arrange
            var paginator = new SortingPaginator <Person>();

            // Act
            void action() => paginator.SortedByString(value);

            // Assert
            Assert.ThrowsException <ArgumentException>(action);
        }
        public void SortedByString_GivenInvalidString_ThrowsFormatException(string value)
        {
            // Arrange
            var paginator = new SortingPaginator <Person>();

            // Act
            void action() => paginator.SortedByString(value);

            // Assert
            Assert.ThrowsException <FormatException>(action);
        }
        public void SortedByString_GivenNullString_ThrowsArgumentNullException()
        {
            // Arrange
            var paginator = new SortingPaginator <Person>();

            // Act
            void action() => paginator.SortedByString(null);

            // Assert
            Assert.ThrowsException <ArgumentNullException>(action);
        }
        public void SortedByString_GivenSingleDirective_AddsSortDirective()
        {
            // Arrange
            var paginator = new SortingPaginator <Person>();

            // Act
            paginator.SortedByString("FamilyName");

            // Assert
            Assert.AreEqual(1, paginator.SortDirectives.Count);
            Assert.AreEqual("FamilyName", GetPropertyNameFromLambda(((SortProperty <Person>)paginator.SortDirectives.First()).Property));
            Assert.AreEqual(SortDirection.Ascending, ((SortProperty <Person>)paginator.SortDirectives.First()).Direction);
        }