42d7a39c49
The three callers now read their sentences out of summary_ru_v1.json: the
plan lines in morning.Plan.FormatRU, the list and reason words in
tasks.FormatRU, and the habit readouts in memory.Profile.
Two behaviour_test assertions moved from substring to say.IsS, because the
habit gaps have variants now and a substring pins one of them. The
"по {day} у тебя обычно" variant was dropped on sight: the activities are
verbs, so it read "у тебя обычно тренируешься".
The persona scorer covers the family, and a new test asserts every gap
variant still says she has not seen enough rather than that he has nothing.
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package say
|
|
|
|
import (
|
|
"math/rand"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// The file has to load, and every key the code names has to be in it.
|
|
func TestSummariesLoad(t *testing.T) {
|
|
s, err := LoadSummaries(rand.NewSource(1))
|
|
if err != nil {
|
|
t.Fatalf("load: %v", err)
|
|
}
|
|
for _, key := range summaryKeys {
|
|
if got := s.Say(key, nil); got == "" {
|
|
t.Errorf("%s says nothing", key)
|
|
}
|
|
}
|
|
}
|
|
|
|
// A nil *Summaries is the unloadable-file case, and it must still speak. The
|
|
// habit sentences are the ones that matter here: falling back must not turn
|
|
// "I have not seen enough" into silence.
|
|
func TestNilSummariesAnswerFromTheFloor(t *testing.T) {
|
|
var s *Summaries
|
|
if got, want := s.Say(HabitOverallNone, nil), summaryFloor[HabitOverallNone]; got != want {
|
|
t.Errorf("got %q, want %q", got, want)
|
|
}
|
|
if got := s.Say(PlanDay, map[string]string{"date": "03.08.2026", "items": "x"}); !strings.Contains(got, "03.08.2026") {
|
|
t.Errorf("the floor dropped the date: %q", got)
|
|
}
|
|
}
|
|
|
|
// The empty cases claim she has not seen enough, never that he has no habits.
|
|
// Every variant has to hold that line, since the picker treats them as equals.
|
|
func TestHabitGapsSaySheHasNotSeenEnough(t *testing.T) {
|
|
s, err := LoadSummaries(rand.NewSource(1))
|
|
if err != nil {
|
|
t.Fatalf("load: %v", err)
|
|
}
|
|
for _, key := range []string{HabitWeekdayNone, HabitWeekendNone, HabitOverallNone} {
|
|
for _, v := range s.d.file.Entries[key].Variants {
|
|
if !strings.Contains(v, "пока") && !strings.Contains(v, "ещё") {
|
|
t.Errorf("%s variant %q reads as a fact about him, not as a gap in her records", key, v)
|
|
}
|
|
}
|
|
}
|
|
}
|