package router import "testing" func TestParseNoteCaptureExtractsOnlyALeadingCommandFrame(t *testing.T) { cases := []struct { name string utterance string want string ok bool }{ {"colon", "запомни: запасной ключ лежит в синей коробке", "запасной ключ лежит в синей коробке", true}, {"case and politeness", "Запиши, пожалуйста: Кофе закончился.", "Кофе закончился.", true}, {"wake word", "Maven, remember: backup runs at 03:00", "backup runs at 03:00", true}, {"leading particles", "ну пожалуйста запомни — пароль в сейфе", "пароль в сейфе", true}, {"enclitic", "запиши-ка: ключ у двери", "ключ у двери", true}, {"quoted body", "сохрани: «Ключ — в ящике». ", "«Ключ — в ящике».", true}, {"meaningful conjunction", "запомни: и это важно", "и это важно", true}, {"question word is content", "запиши: что такое TCP?", "что такое TCP?", true}, {"infinitive question is content", "запиши что купить к ужину", "что купить к ужину", true}, {"ordinary note", "кофе закончился", "", false}, {"embedded command", "у меня новый ноутбук, запиши это", "", false}, {"past-tense report", "запомнил пароль от роутера", "", false}, {"empty command", "запомни: ...", "", false}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { got, ok := ParseNoteCapture(tc.utterance) if ok != tc.ok || got != tc.want { t.Fatalf("ParseNoteCapture(%q) = %q, %v; want %q, %v", tc.utterance, got, ok, tc.want, tc.ok) } }) } } func TestParseNoteCaptureDropsProvenRussianComplementizer(t *testing.T) { got, ok := ParseNoteCapture("запомни, что кофе закончился") if !ok || got != "кофе закончился" { t.Fatalf("got %q, %v; want an inflected clause without the capture complementizer", got, ok) } }