138 lines
5.2 KiB
C#
138 lines
5.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace HanvonF710XAttendanceService
|
|
{
|
|
internal static class DbToDeviceSummaryTests
|
|
{
|
|
public static int RunAll()
|
|
{
|
|
int failed = 0;
|
|
failed += Run("existing user is skipped", TestExistingUserSkipped);
|
|
failed += Run("missing user is enrolled", TestMissingUserEnrolled);
|
|
failed += Run("summary contains required fields", TestSummaryContainsRequiredFields);
|
|
failed += Run("multiple machines produce separate summaries", TestMultipleMachineSummaries);
|
|
return failed;
|
|
}
|
|
|
|
private static int Run(string name, Func<bool> test)
|
|
{
|
|
try
|
|
{
|
|
if (!test())
|
|
{
|
|
Console.WriteLine("FAIL: " + name);
|
|
return 1;
|
|
}
|
|
|
|
Console.WriteLine("PASS: " + name);
|
|
return 0;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("FAIL: " + name + " err=" + ex.Message);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
private static bool TestExistingUserSkipped()
|
|
{
|
|
var registered = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "15057", "6401" };
|
|
return DbToDeviceSkipLogic.ShouldSkipAlreadyRegistered(registered, "15057")
|
|
&& DbToDeviceSkipLogic.ShouldSkipAlreadyRegistered(registered, " 6401 ")
|
|
&& !DbToDeviceSkipLogic.ShouldSkipAlreadyRegistered(registered, "99999");
|
|
}
|
|
|
|
private static bool TestMissingUserEnrolled()
|
|
{
|
|
var registered = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "15057" };
|
|
var summary = new DbToDeviceTargetSummary
|
|
{
|
|
MachineId = "105",
|
|
MachineIp = "192.168.90.223",
|
|
MachineType = "HANVON"
|
|
};
|
|
|
|
// Existing -> skip
|
|
if (DbToDeviceSkipLogic.ShouldSkipAlreadyRegistered(registered, "15057"))
|
|
{
|
|
summary.AlreadyRegistered++;
|
|
}
|
|
|
|
// Missing -> enroll
|
|
if (!DbToDeviceSkipLogic.ShouldSkipAlreadyRegistered(registered, "99999"))
|
|
{
|
|
summary.NewlyRegistered++;
|
|
}
|
|
|
|
return summary.AlreadyRegistered == 1 && summary.NewlyRegistered == 1;
|
|
}
|
|
|
|
private static bool TestSummaryContainsRequiredFields()
|
|
{
|
|
var summary = new DbToDeviceTargetSummary
|
|
{
|
|
MachineId = "105",
|
|
MachineIp = "192.168.90.223",
|
|
MachineType = "HANVON",
|
|
AlreadyRegistered = 620,
|
|
NewlyRegistered = 30
|
|
};
|
|
summary.AddMissingMapping("88888");
|
|
summary.AddFailure("15057", "John Smith", "Production", "Employee photo not found");
|
|
summary.AddFailure("6401", "ABC XYZ", "Quality", "DUPLICATE_FACE existing_device_id=6400");
|
|
|
|
string report = summary.FormatReport();
|
|
return report.Contains("DB_TO_DEVICE SUMMARY")
|
|
&& report.Contains("Machine ID: 105")
|
|
&& report.Contains("IP: 192.168.90.223")
|
|
&& report.Contains("Type: HANVON")
|
|
&& report.Contains("Already Registered: 620")
|
|
&& report.Contains("Newly Registered: 30")
|
|
&& report.Contains("Failed: 2")
|
|
&& report.Contains("Missing Employee Mapping: 1")
|
|
&& report.Contains("Serial: 15057")
|
|
&& report.Contains("Name: John Smith")
|
|
&& report.Contains("Department: Production")
|
|
&& report.Contains("Reason: Employee photo not found")
|
|
&& report.Contains("DUPLICATE_FACE existing_device_id=6400");
|
|
}
|
|
|
|
private static bool TestMultipleMachineSummaries()
|
|
{
|
|
var a = new DbToDeviceTargetSummary
|
|
{
|
|
MachineId = "105",
|
|
MachineIp = "192.168.90.223",
|
|
MachineType = "HANVON",
|
|
AlreadyRegistered = 10,
|
|
NewlyRegistered = 2
|
|
};
|
|
var b = new DbToDeviceTargetSummary
|
|
{
|
|
MachineId = "106",
|
|
MachineIp = "10.0.1.7",
|
|
MachineType = "HANVON",
|
|
AlreadyRegistered = 5,
|
|
NewlyRegistered = 7
|
|
};
|
|
b.AddFailure("6401", "ABC XYZ", "Quality", "DUPLICATE_FACE existing_device_id=6400");
|
|
|
|
string reportA = a.FormatReport();
|
|
string reportB = b.FormatReport();
|
|
|
|
return reportA.Contains("Machine ID: 105")
|
|
&& reportA.Contains("IP: 192.168.90.223")
|
|
&& reportA.Contains("Already Registered: 10")
|
|
&& reportA.Contains("Newly Registered: 2")
|
|
&& !reportA.Contains("10.0.1.7")
|
|
&& reportB.Contains("Machine ID: 106")
|
|
&& reportB.Contains("IP: 10.0.1.7")
|
|
&& reportB.Contains("Already Registered: 5")
|
|
&& reportB.Contains("Newly Registered: 7")
|
|
&& reportB.Contains("Failed: 1")
|
|
&& !reportB.Contains("192.168.90.223");
|
|
}
|
|
}
|
|
}
|