89 lines
3.1 KiB
C#
89 lines
3.1 KiB
C#
using HSchool.Server.Api;
|
|
using HSchool.Server.Game;
|
|
|
|
namespace HSchool.Server.Tests;
|
|
|
|
public class PortraitPromptBuilderTests
|
|
{
|
|
[Fact]
|
|
public void Build_IncludesAgeHairAndWornClothing()
|
|
{
|
|
var settings = new SwarmUiSettings
|
|
{
|
|
Positive = "School photo.",
|
|
Avatar = new SwarmUiSettings.SwarmUiPreset { Positive = "Head and shoulders." },
|
|
};
|
|
|
|
var card = SampleCard();
|
|
var (positive, _) = PortraitPromptBuilder.Build(card, settings, PortraitKind.Avatar);
|
|
|
|
Assert.Contains("age 12", positive, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("black", positive, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("shirt", positive, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("white", positive, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("Head and shoulders.", positive, StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_FullBody_AddsFullBodyPreset()
|
|
{
|
|
var settings = new SwarmUiSettings
|
|
{
|
|
Positive = "School photo.",
|
|
Avatar = new SwarmUiSettings.SwarmUiPreset { Positive = "Head and shoulders." },
|
|
FullBody = new SwarmUiSettings.SwarmUiPreset { Positive = "Standing full body." },
|
|
};
|
|
|
|
var (avatarPositive, _) = PortraitPromptBuilder.Build(SampleCard(), settings, PortraitKind.Avatar);
|
|
var (fullPositive, _) = PortraitPromptBuilder.Build(SampleCard(), settings, PortraitKind.Full);
|
|
|
|
Assert.Contains("Head and shoulders.", avatarPositive, StringComparison.Ordinal);
|
|
Assert.DoesNotContain("Standing full body.", avatarPositive, StringComparison.Ordinal);
|
|
Assert.Contains("Standing full body.", fullPositive, StringComparison.Ordinal);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_HalfBody_AddsHalfBodyPreset()
|
|
{
|
|
var settings = new SwarmUiSettings
|
|
{
|
|
Positive = "School photo.",
|
|
HalfBody = new SwarmUiSettings.SwarmUiPreset { Positive = "Waist-up portrait." },
|
|
FullBody = new SwarmUiSettings.SwarmUiPreset { Positive = "Standing full body." },
|
|
};
|
|
|
|
var (halfPositive, _) = PortraitPromptBuilder.Build(SampleCard(), settings, PortraitKind.Half);
|
|
|
|
Assert.Contains("Waist-up portrait.", halfPositive, StringComparison.Ordinal);
|
|
Assert.DoesNotContain("Standing full body.", halfPositive, StringComparison.Ordinal);
|
|
}
|
|
|
|
private static PersonCardResponse SampleCard() =>
|
|
new(
|
|
"f0.c0",
|
|
"Maria Ivanova",
|
|
"Ivanova",
|
|
"Maria",
|
|
"",
|
|
true,
|
|
12,
|
|
new DateTime(2000, 3, 14, 0, 0, 0, DateTimeKind.Utc),
|
|
["student"],
|
|
5,
|
|
"A",
|
|
"class-1",
|
|
null,
|
|
null,
|
|
[new LabeledStatResponse("HairColor", "Hair colour", "Black")],
|
|
[],
|
|
[],
|
|
[],
|
|
null,
|
|
null,
|
|
new PersonFamilyResponse([], [], [], []),
|
|
[new WornItemResponse("Shirt", "Shirt", "White", "White", [], 1f, "new")],
|
|
[],
|
|
0f,
|
|
0f);
|
|
}
|