Add lesson marks 2-5 from lesson quality once per slot.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
using HSchool.Content;
|
||||
|
||||
namespace HSchool.Ai.Tests;
|
||||
|
||||
public class LessonMarkTests
|
||||
{
|
||||
private static readonly BehaviorDef Rules = new()
|
||||
{
|
||||
DefName = "Behavior",
|
||||
LessonMarkThresholds = BehaviorDef.DefaultLessonMarkThresholds,
|
||||
LessonMarkMax = 40,
|
||||
LessonMarkWhenNoTeacher = 2,
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public void StrongTeacher_MarkIsAtLeastEmptyRoomMark()
|
||||
{
|
||||
var strongQuality = LessonLearning.Quality(
|
||||
hunger: 1f,
|
||||
traitOffset: 0,
|
||||
teacherSkill: 100f,
|
||||
warmth: 1f,
|
||||
textbookFactor: 1f);
|
||||
var strong = LessonLearning.Mark(strongQuality, Rules);
|
||||
var emptyRoom = Rules.LessonMarkWhenNoTeacher!.Value;
|
||||
|
||||
Assert.True(strong >= emptyRoom);
|
||||
Assert.Equal(5, strong);
|
||||
Assert.Equal(2, emptyRoom);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SameInputs_SameMark()
|
||||
{
|
||||
var first = LessonLearning.Mark(
|
||||
LessonLearning.Quality(0.8f, 4, 70f, 0.9f, 0.5f),
|
||||
Rules);
|
||||
var second = LessonLearning.Mark(
|
||||
LessonLearning.Quality(0.8f, 4, 70f, 0.9f, 0.5f),
|
||||
Rules);
|
||||
|
||||
Assert.Equal(first, second);
|
||||
Assert.InRange(first, 2, 5);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ZeroMultiplier_YieldsLowestMark()
|
||||
{
|
||||
var mark = LessonLearning.Mark(
|
||||
LessonLearning.Quality(1f, 0, 100f, 1f, textbookFactor: 0f),
|
||||
Rules);
|
||||
|
||||
Assert.Equal(2, mark);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(0.85f, 5)]
|
||||
[InlineData(0.6f, 4)]
|
||||
[InlineData(0.35f, 3)]
|
||||
[InlineData(0.34f, 2)]
|
||||
public void Thresholds_MapQualityToMark(float quality, int expected)
|
||||
{
|
||||
Assert.Equal(expected, LessonLearning.Mark(quality, Rules));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user