Files
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

35 lines
1.7 KiB
C#

using System.Collections.ObjectModel;
using Ludarium.Application;
using Ludarium.Domain;
namespace Ludarium.UnitTests;
public sealed class SnapshotComparerTests
{
[Fact]
public void ComparisonDistinguishesAddedRemovedMovedChangedAndUnchanged()
{
var root = Guid.NewGuid();
var moved = Guid.NewGuid(); var changed = Guid.NewGuid(); var removed = Guid.NewGuid(); var unchanged = Guid.NewGuid(); var added = Guid.NewGuid();
var before = Snapshot("before",
new(root, "old/game.bin", 1, Hash('a'), moved, null),
new(root, "changed.bin", 1, Hash('b'), changed, null),
new(root, "removed.bin", 1, Hash('c'), removed, null),
new(root, "same.bin", 1, Hash('d'), unchanged, null));
var after = Snapshot("after",
new(root, "new/game.bin", 1, Hash('a'), moved, null),
new(root, "changed.bin", 2, Hash('e'), changed, null),
new(root, "same.bin", 1, Hash('d'), unchanged, null),
new(root, "added.bin", 1, Hash('f'), added, null));
var result = new SnapshotComparer().Compare(before, after);
Assert.Single(result, x => x.Kind == SnapshotChangeKind.Added);
Assert.Single(result, x => x.Kind == SnapshotChangeKind.Removed);
Assert.Single(result, x => x.Kind == SnapshotChangeKind.Moved);
Assert.Single(result, x => x.Kind == SnapshotChangeKind.ContentChanged);
Assert.Single(result, x => x.Kind == SnapshotChangeKind.Unchanged);
}
private static IntegritySnapshot Snapshot(string name, params SnapshotItem[] items) => new(Guid.NewGuid(), name, "1", "test", DateTimeOffset.UtcNow, new ReadOnlyCollection<SnapshotItem>(items));
private static string Hash(char value) => new(value, 64);
}