75 lines
2.9 KiB
Go
75 lines
2.9 KiB
Go
package classifier
|
|
|
|
import "testing"
|
|
|
|
func TestGating_Stage1_DefinitePost(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
headline string
|
|
lede string
|
|
}{
|
|
{"head of state", "President signs new climate bill", "The president signed legislation today."},
|
|
{"international body", "WHO declares new pandemic phase", "The World Health Organization announced a new phase."},
|
|
{"casualties", "12 killed in factory explosion", "Authorities report 12 dead after an explosion."},
|
|
{"disaster", "Earthquake strikes northern Japan", "A major earthquake hit the region early Tuesday."},
|
|
{"conflict", "Airstrike hits hospital in conflict zone", "An airstrike damaged a hospital."},
|
|
{"crisis", "Economic crisis deepens in Argentina", "The ongoing crisis has intensified."},
|
|
{"financial scale", "EU approves $50bn climate fund", "The European Union approved funding."},
|
|
{"assassination", "Assassination attempt on opposition leader", "An armed assailant attacked the leader."},
|
|
{"NATO", "NATO expands eastern flank deployment", "Alliance members agreed to new deployments."},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, reason := RunGating(tt.headline, tt.lede)
|
|
if result != GatingPost {
|
|
t.Errorf("expected GatingPost, got %d (reason: %s)", result, reason)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGating_Stage2_DefiniteDiscard(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
headline string
|
|
lede string
|
|
}{
|
|
{"local government", "City council approves new parking meters", "The council voted 5-3 in favor."},
|
|
{"sports scores", "Lakers defeat Celtics 112-98 in regular season", "Final score 112-98."},
|
|
{"celebrity gossip", "Celebrity couple spotted on red carpet at Cannes", "The pair arrived together."},
|
|
{"routine earnings", "Regional bank reports Q2 results slightly above estimates", "Quarterly earnings were released."},
|
|
{"entertainment", "Pop star announces new album release date", "Fans have been waiting since 2023."},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, reason := RunGating(tt.headline, tt.lede)
|
|
if result != GatingDiscard {
|
|
t.Errorf("expected GatingDiscard, got %d (reason: %s)", result, reason)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGating_Stage3_Ambiguous(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
headline string
|
|
lede string
|
|
}{
|
|
{"tech product", "Apple unveils new MacBook Pro with M5 chip", "The new laptops feature significant performance gains."},
|
|
{"policy nuanced", "Government considers new data privacy framework", "Ministers met to discuss potential changes."},
|
|
{"science", "Researchers discover high-temperature superconductor", "A team at MIT published findings in Nature."},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, reason := RunGating(tt.headline, tt.lede)
|
|
if result != GatingAmbiguous {
|
|
t.Errorf("expected GatingAmbiguous, got %d (reason: %s)", result, reason)
|
|
}
|
|
})
|
|
}
|
|
}
|