mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-14 20:28:27 +00:00
Co-authored-by: Thorsten Sommer <SommerEngineering@users.noreply.github.com>
93 lines
3.3 KiB
C#
93 lines
3.3 KiB
C#
using AIStudio.Assistants.ModelComparison;
|
|
|
|
namespace AIStudio.Tests.Assistants.ModelComparison;
|
|
|
|
/// <summary>
|
|
/// Checks that presets and comparison series keep names which the user can tell apart.
|
|
/// </summary>
|
|
[TestFixture]
|
|
public sealed class ModelComparisonNamesTests
|
|
{
|
|
private const int MAX_LENGTH = 60;
|
|
|
|
[TestCase("Weekly reports", true)]
|
|
[TestCase("weekly REPORTS", true)]
|
|
[TestCase(" Weekly reports ", true)]
|
|
[TestCase("Weekly report", false)]
|
|
public void ANameIsTakenRegardlessOfCaseAndSpaces(string name, bool expectedTaken)
|
|
{
|
|
Assert.That(ModelComparisonNames.IsTaken(name, ["Weekly reports", "Daily mails"]), Is.EqualTo(expectedTaken));
|
|
}
|
|
|
|
[Test]
|
|
public void ATakenNameWithSpacesAroundItCounts()
|
|
{
|
|
Assert.That(ModelComparisonNames.IsTaken("Weekly reports", [" Weekly reports "]), Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void AFreeNameStaysAsItIs()
|
|
{
|
|
Assert.That(ModelComparisonNames.FreeNameFrom(" Weekly reports ", ["Daily mails"], MAX_LENGTH), Is.EqualTo("Weekly reports"));
|
|
}
|
|
|
|
[Test]
|
|
public void ATakenNameGetsTheNextFreeNumber()
|
|
{
|
|
using (Assert.EnterMultipleScope())
|
|
{
|
|
Assert.That(ModelComparisonNames.FreeNameFrom("Weekly reports", ["Weekly reports"], MAX_LENGTH), Is.EqualTo("Weekly reports (2)"));
|
|
Assert.That(ModelComparisonNames.FreeNameFrom("Weekly reports", ["Weekly reports", "weekly reports (2)"], MAX_LENGTH), Is.EqualTo("Weekly reports (3)"));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void ANumberedNameCountsOnFromItsBase()
|
|
{
|
|
string[] takenNames = ["Weekly reports", "Weekly reports (2)"];
|
|
Assert.That(ModelComparisonNames.FreeNameFrom("Weekly reports (2)", takenNames, MAX_LENGTH), Is.EqualTo("Weekly reports (3)"), "A copy of a copy must not become \"Weekly reports (2) (2)\".");
|
|
}
|
|
|
|
[TestCase(null)]
|
|
[TestCase("")]
|
|
[TestCase(" ")]
|
|
public void ASeriesNeedsAName(string? name)
|
|
{
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue(name, []), Is.Not.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void ASeriesNameMayNotBeTooLong()
|
|
{
|
|
var longestName = new string('a', ModelComparisonNames.MAX_SERIES_NAME_LENGTH);
|
|
using (Assert.EnterMultipleScope())
|
|
{
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue(longestName, []), Is.Null);
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue($" {longestName} ", []), Is.Null, "Spaces around the name do not count, since they are not stored.");
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue(longestName + "a", []), Is.Not.Null);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void ASeriesNameMayNotBeTakenByAnotherSeries()
|
|
{
|
|
using (Assert.EnterMultipleScope())
|
|
{
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue("weekly REPORTS", ["Weekly reports"]), Is.Not.Null);
|
|
Assert.That(ModelComparisonNames.SeriesNameIssue("Weekly reports", ["Daily mails"]), Is.Null);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void ALongNameIsShortenedForItsNumber()
|
|
{
|
|
var longName = new string('a', MAX_LENGTH);
|
|
var freeName = ModelComparisonNames.FreeNameFrom(longName, [longName], MAX_LENGTH);
|
|
|
|
using (Assert.EnterMultipleScope())
|
|
{
|
|
Assert.That(freeName, Has.Length.EqualTo(MAX_LENGTH));
|
|
Assert.That(freeName, Does.EndWith(" (2)"));
|
|
}
|
|
}
|
|
} |