package linguistics

import "testing"

func TestPoeticAnalyzer_QuatrainABAB(t *testing.T) {
	poem := `In silver light we wander far, light
A gentle breeze across the sea, breeze
At quiet dusk we find a star, night
And in the dark we feel the freeze.`
	// Last words: light, breeze, night, freeze -> ABAB by last 2 letters (ht, ze, ht, ze)
	p := NewPoeticAnalyzer()
	m, err := p.Analyse(Text{Body: poem})
	if err != nil {
		t.Fatalf("Analyse returned error: %v", err)
	}
	if m.RhymeScheme != "ABAB" {
		t.Errorf("expected rhyme scheme ABAB, got %q", m.RhymeScheme)
	}
	if m.StanzaCount != 1 {
		t.Errorf("expected 1 stanza, got %d", m.StanzaCount)
	}
	if m.LineCount != 4 {
		t.Errorf("expected 4 lines, got %d", m.LineCount)
	}
	if m.Structure != "Quatrain" {
		t.Errorf("expected structure Quatrain, got %q", m.Structure)
	}
	// Meter is heuristic; just ensure it's determined (not Unknown)
	if m.MeterType == "Unknown" {
		t.Errorf("expected a determined meter type, got %q", m.MeterType)
	}
}
