This commit is contained in:
Chris Kruining 2026-02-05 11:34:57 +01:00
parent 0801ceee6a
commit 54ba7496c6
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
19 changed files with 1765 additions and 591 deletions

View file

@ -15,14 +15,14 @@ public class RobustnessAnalysisTests : IDisposable
{
private readonly ITestOutputHelper _output;
private readonly string _dbPath;
private readonly CardHashDatabase _database;
private readonly CardDatabase _database;
private readonly CardRecognitionService _recognitionService;
public RobustnessAnalysisTests(ITestOutputHelper output)
{
_output = output;
_dbPath = Path.Combine(Path.GetTempPath(), $"scry_robustness_test_{Guid.NewGuid()}.db");
_database = new CardHashDatabase(_dbPath);
_database = new CardDatabase(_dbPath);
_recognitionService = new CardRecognitionService(_database);
}
@ -52,11 +52,16 @@ public class RobustnessAnalysisTests : IDisposable
var originalHash = _recognitionService.ComputeHash(original);
// Register original in database
await _database.InsertHashAsync(new CardHash
await _database.InsertOracleAsync(new Oracle { Id = "oracle-serra", Name = "Serra Angel" });
await _database.InsertSetAsync(new Set { Id = "set-lea", Code = "LEA", Name = "Alpha" });
await _database.InsertCardAsync(new Card
{
CardId = "serra-angel",
Name = "Serra Angel",
Id = "serra-angel",
OracleId = "oracle-serra",
SetId = "set-lea",
SetCode = "LEA",
Name = "Serra Angel",
Hash = originalHash
});
await _recognitionService.InvalidateCacheAsync();
@ -113,11 +118,16 @@ public class RobustnessAnalysisTests : IDisposable
var originalHash = _recognitionService.ComputeHash(original);
await _database.InsertHashAsync(new CardHash
await _database.InsertOracleAsync(new Oracle { Id = "oracle-serra", Name = "Serra Angel" });
await _database.InsertSetAsync(new Set { Id = "set-lea", Code = "LEA", Name = "Alpha" });
await _database.InsertCardAsync(new Card
{
CardId = "serra-angel",
Name = "Serra Angel",
Id = "serra-angel",
OracleId = "oracle-serra",
SetId = "set-lea",
SetCode = "LEA",
Name = "Serra Angel",
Hash = originalHash
});
await _recognitionService.InvalidateCacheAsync();
@ -167,11 +177,16 @@ public class RobustnessAnalysisTests : IDisposable
var originalHash = _recognitionService.ComputeHash(original);
await _database.InsertHashAsync(new CardHash
await _database.InsertOracleAsync(new Oracle { Id = "oracle-serra", Name = "Serra Angel" });
await _database.InsertSetAsync(new Set { Id = "set-lea", Code = "LEA", Name = "Alpha" });
await _database.InsertCardAsync(new Card
{
CardId = "serra-angel",
Name = "Serra Angel",
Id = "serra-angel",
OracleId = "oracle-serra",
SetId = "set-lea",
SetCode = "LEA",
Name = "Serra Angel",
Hash = originalHash
});
await _recognitionService.InvalidateCacheAsync();
@ -218,11 +233,16 @@ public class RobustnessAnalysisTests : IDisposable
var originalHash = _recognitionService.ComputeHash(original);
await _database.InsertHashAsync(new CardHash
await _database.InsertOracleAsync(new Oracle { Id = "oracle-serra", Name = "Serra Angel" });
await _database.InsertSetAsync(new Set { Id = "set-lea", Code = "LEA", Name = "Alpha" });
await _database.InsertCardAsync(new Card
{
CardId = "serra-angel",
Name = "Serra Angel",
Id = "serra-angel",
OracleId = "oracle-serra",
SetId = "set-lea",
SetCode = "LEA",
Name = "Serra Angel",
Hash = originalHash
});
await _recognitionService.InvalidateCacheAsync();
@ -265,11 +285,16 @@ public class RobustnessAnalysisTests : IDisposable
var originalHash = _recognitionService.ComputeHash(original);
await _database.InsertHashAsync(new CardHash
await _database.InsertOracleAsync(new Oracle { Id = "oracle-serra", Name = "Serra Angel" });
await _database.InsertSetAsync(new Set { Id = "set-lea", Code = "LEA", Name = "Alpha" });
await _database.InsertCardAsync(new Card
{
CardId = "serra-angel",
Name = "Serra Angel",
Id = "serra-angel",
OracleId = "oracle-serra",
SetId = "set-lea",
SetCode = "LEA",
Name = "Serra Angel",
Hash = originalHash
});
await _recognitionService.InvalidateCacheAsync();
@ -312,14 +337,14 @@ public class RobustnessAnalysisTests : IDisposable
return;
}
using var prodDb = new CardHashDatabase(dbPath);
using var prodDb = new CardDatabase(dbPath);
using var prodRecognition = new CardRecognitionService(prodDb);
var testImagesDir = Path.Combine(rootDir, "TestImages");
var categoriesToTest = new[] { "real_photos", "varying_quality", "angled", "low_light" };
_output.WriteLine("=== Real-World Recognition Test ===");
_output.WriteLine($"Database cards: {(await prodDb.GetAllHashesAsync()).Count}");
_output.WriteLine($"Database cards: {(await prodDb.GetCardsWithHashAsync()).Count}");
_output.WriteLine("");
foreach (var category in categoriesToTest)