Unit Tests & New Natural Sort (#941)

* Added a lot of tests

* More tests! Added a Parser.NormalizePath to normalize all paths within Kavita.

* Fixed a bug where MarkChaptersAsUnread implementation wasn't consistent between different files and lead to extra row generation for no reason.

* Added more unit tests

* Found a better implementation for Natural Sorting. Added tests and validate it works. Next commit will swap out natural Sort for new Extension.

* Replaced NaturalSortComparer with OrderByNatural.

* Drastically simplified and sped up FindFirstEntry for finding cover images in archives

* Initial fix for a epub bug where metadata defines key as absolute path but document uses a relative path. We now have a hack to correct for the epub.
This commit is contained in:
Joseph Milazzo 2022-01-15 07:39:34 -08:00 committed by GitHub
parent 71d42b1c8b
commit 591b574706
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 1533 additions and 314 deletions

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using API.Comparators;
using API.DTOs;
using API.Extensions;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Order;
@ -16,9 +17,6 @@ namespace API.Benchmark
[RankColumn]
public class TestBenchmark
{
private readonly NaturalSortComparer _naturalSortComparer = new ();
private static IEnumerable<VolumeDto> GenerateVolumes(int max)
{
var random = new Random();
@ -50,11 +48,11 @@ namespace API.Benchmark
return list;
}
private void SortSpecialChapters(IEnumerable<VolumeDto> volumes)
private static void SortSpecialChapters(IEnumerable<VolumeDto> volumes)
{
foreach (var v in volumes.Where(vDto => vDto.Number == 0))
{
v.Chapters = v.Chapters.OrderBy(x => x.Range, _naturalSortComparer).ToList();
v.Chapters = v.Chapters.OrderByNatural(x => x.Range).ToList();
}
}