diff --git a/src/QuerySpecification/Evaluators/LikeExtension.cs b/src/QuerySpecification/Evaluators/LikeExtension.cs index ceb00e0..f4d1db3 100644 --- a/src/QuerySpecification/Evaluators/LikeExtension.cs +++ b/src/QuerySpecification/Evaluators/LikeExtension.cs @@ -33,6 +33,7 @@ private static bool SqlLike(this string input, string pattern) return regex.IsMatch(input); } +#pragma warning disable IDE0051 // Remove unused private members // This C# implementation of SQL Like operator is based on the following SO post https://stackoverflow.com/a/8583383/10577116 // It covers almost all of the scenarios, and it's faster than regex based implementations. // It may fail/throw in some very specific and edge cases, hence, wrap it in try/catch. diff --git a/tests/QuerySpecification.Tests/Paging/PaginationTests.cs b/tests/QuerySpecification.Tests/Paging/PaginationTests.cs index 6168cc7..6afb2b9 100644 --- a/tests/QuerySpecification.Tests/Paging/PaginationTests.cs +++ b/tests/QuerySpecification.Tests/Paging/PaginationTests.cs @@ -1,4 +1,6 @@ -namespace Tests.Paging; +using Xunit.Abstractions; + +namespace Tests.Paging; public class PaginationTests { @@ -7,18 +9,6 @@ public class PaginationTests private const int _defaultPageSizeLimit = 50; private static readonly PaginationSettings _settings = new(_defaultPageSize, _defaultPageSizeLimit); - public record Expected( - int TotalItems, - int TotalPages, - int PageSize, - int Page, - int StartItem, - int EndItem, - bool HasPrevious, - bool HasNext, - int Take, - int Skip); - public static TheoryData TheoryData => new() { { 0, null, null, new Expected(0, 1, 10, 1, 0, 0, false, false, 10, 0) }, @@ -221,4 +211,71 @@ public void Skip_GivenPageSize(int itemsCountInput, int? pageSizeInput, int? pag pagination.Skip.Should().Be(skip); } + + public record Expected : IXunitSerializable + { + public int TotalItems; + public int TotalPages; + public int PageSize; + public int Page; + public int StartItem; + public int EndItem; + public bool HasPrevious; + public bool HasNext; + public int Take; + public int Skip; + + public Expected() { } + public Expected( + int totalItems, + int totalPages, + int pageSize, + int page, + int startItem, + int endItem, + bool hasPrevious, + bool hasNext, + int take, + int skip) + { + TotalItems = totalItems; + TotalPages = totalPages; + PageSize = pageSize; + Page = page; + StartItem = startItem; + EndItem = endItem; + HasPrevious = hasPrevious; + HasNext = hasNext; + Take = take; + Skip = skip; + } + + public void Deserialize(IXunitSerializationInfo info) + { + TotalItems = info.GetValue(nameof(TotalItems)); + TotalPages = info.GetValue(nameof(TotalPages)); + PageSize = info.GetValue(nameof(PageSize)); + Page = info.GetValue(nameof(Page)); + StartItem = info.GetValue(nameof(StartItem)); + EndItem = info.GetValue(nameof(EndItem)); + HasPrevious = info.GetValue(nameof(HasPrevious)); + HasNext = info.GetValue(nameof(HasNext)); + Take = info.GetValue(nameof(Take)); + Skip = info.GetValue(nameof(Skip)); + } + + public void Serialize(IXunitSerializationInfo info) + { + info.AddValue(nameof(TotalItems), TotalItems); + info.AddValue(nameof(TotalPages), TotalPages); + info.AddValue(nameof(PageSize), PageSize); + info.AddValue(nameof(Page), Page); + info.AddValue(nameof(StartItem), StartItem); + info.AddValue(nameof(EndItem), EndItem); + info.AddValue(nameof(HasPrevious), HasPrevious); + info.AddValue(nameof(HasNext), HasNext); + info.AddValue(nameof(Take), Take); + info.AddValue(nameof(Skip), Skip); + } + } }