Implement phase 35 dress appropriateness and school rules.
Adds outfit evaluation, morning home dressing, locker-room ChangeClothes with day-log events, PE/weather AI goals, dress-rules API, and tests.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using HSchool.Content;
|
||||
|
||||
namespace HSchool.Content.Tests;
|
||||
|
||||
public class AppropriatenessTests
|
||||
{
|
||||
[Fact]
|
||||
public void NoBright_RejectsBrightTag()
|
||||
{
|
||||
var catalog = LoadCatalog();
|
||||
var rules = new DressRulePair(FormPolicies.Regular, ColorPolicies.NoBright);
|
||||
Assert.False(Appropriateness.ColorAllowed(catalog, rules, catalog.Things["TShirt"], "Red"));
|
||||
Assert.True(Appropriateness.ColorAllowed(catalog, rules, catalog.Things["TShirt"], "Blue"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ShortForm_YoungPupil_UsesRegularEffectiveForm()
|
||||
{
|
||||
var catalog = LoadCatalog();
|
||||
var rules = new DressRulePair(FormPolicies.Short, ColorPolicies.Free);
|
||||
var context = new ApparelContext(
|
||||
Female: true,
|
||||
Age: 7,
|
||||
IsStudent: true,
|
||||
rules,
|
||||
ApparelMode.Everyday,
|
||||
OutdoorTemperatureC: 15f,
|
||||
catalog.BehaviorRules);
|
||||
Assert.Equal(FormPolicies.Regular, Appropriateness.EffectiveForm(context));
|
||||
Assert.False(Appropriateness.SkirtLengthFits(context, catalog.Things["ShortSkirt"]));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ShortForm_OlderPupil_AllowsShortSkirt()
|
||||
{
|
||||
var catalog = LoadCatalog();
|
||||
var rules = new DressRulePair(FormPolicies.Short, ColorPolicies.Free);
|
||||
var context = new ApparelContext(
|
||||
Female: true,
|
||||
Age: 15,
|
||||
IsStudent: true,
|
||||
rules,
|
||||
ApparelMode.Everyday,
|
||||
OutdoorTemperatureC: 15f,
|
||||
catalog.BehaviorRules);
|
||||
Assert.True(Appropriateness.SkirtLengthFits(context, catalog.Things["ShortSkirt"]));
|
||||
}
|
||||
|
||||
private static DefCatalog LoadCatalog()
|
||||
{
|
||||
var root = Path.Combine(AppContext.BaseDirectory, "vanilla");
|
||||
var documents = PackDocuments.FromDirectory(CatalogLoader.CorePackId, root);
|
||||
return new CatalogLoader().Load([CatalogLoader.CorePackId], documents);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user