package router import "testing" func TestActHasEntityTargetRequiresNamedTargetEvidence(t *testing.T) { cases := []struct { name string dec Decision want bool }{ { name: "matched function and argument", dec: Decision{Intent: IntentAct, Slots: Slots{ Fn: "restart", HasFn: true, Args: []string{"nginx"}, Text: "restart nginx", }}, want: true, }, { name: "model function and target text", dec: Decision{Intent: IntentAct, Slots: Slots{ Fn: "restart", HasFn: true, Text: "перезапусти гитею", }}, want: true, }, { name: "matched function alone", dec: Decision{Intent: IntentAct, Slots: Slots{ Fn: "выключи", HasFn: true, Text: "выключи", }}, want: false, }, { name: "matched function with politeness only", dec: Decision{Intent: IntentAct, Slots: Slots{ Fn: "выключи", HasFn: true, Args: []string{"пожалуйста"}, Text: "выключи пожалуйста", }}, want: false, }, { name: "matched function with anaphora only", dec: Decision{Intent: IntentAct, Slots: Slots{ Fn: "выключи", HasFn: true, Args: []string{"его"}, Text: "выключи его", }}, want: false, }, { name: "unmatched entity act", dec: Decision{Intent: IntentAct, Slots: Slots{Text: "перезапусти muzick indexer"}}, want: true, }, { name: "unmatched verb alone", dec: Decision{Intent: IntentAct, Slots: Slots{Text: "перезапусти"}}, want: false, }, { name: "unresolved demonstrative", dec: Decision{Intent: IntentAct, Slots: Slots{Text: "сделай это"}}, want: false, }, } for _, testCase := range cases { t.Run(testCase.name, func(t *testing.T) { if got := ActHasEntityTarget(testCase.dec); got != testCase.want { t.Errorf("ActHasEntityTarget(%+v) = %v, want %v", testCase.dec, got, testCase.want) } }) } }