Skip to content

Commit

Permalink
Implemented IXunitSerializable for TheoryData.
Browse files Browse the repository at this point in the history
  • Loading branch information
fiseni committed Sep 27, 2024
1 parent 32d8057 commit 3561f99
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 13 deletions.
1 change: 1 addition & 0 deletions src/QuerySpecification/Evaluators/LikeExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
83 changes: 70 additions & 13 deletions tests/QuerySpecification.Tests/Paging/PaginationTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Tests.Paging;
using Xunit.Abstractions;

namespace Tests.Paging;

public class PaginationTests
{
Expand All @@ -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<int, int?, int?, Expected> TheoryData => new()
{
{ 0, null, null, new Expected(0, 1, 10, 1, 0, 0, false, false, 10, 0) },
Expand Down Expand Up @@ -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<int>(nameof(TotalItems));
TotalPages = info.GetValue<int>(nameof(TotalPages));
PageSize = info.GetValue<int>(nameof(PageSize));
Page = info.GetValue<int>(nameof(Page));
StartItem = info.GetValue<int>(nameof(StartItem));
EndItem = info.GetValue<int>(nameof(EndItem));
HasPrevious = info.GetValue<bool>(nameof(HasPrevious));
HasNext = info.GetValue<bool>(nameof(HasNext));
Take = info.GetValue<int>(nameof(Take));
Skip = info.GetValue<int>(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);
}
}
}

0 comments on commit 3561f99

Please sign in to comment.