package dedup

import "testing"

func TestCanonicalURL(t *testing.T) {
	cases := []struct {
		in, want string
	}{
		{"", ""},
		{"https://example.com/foo", "https://example.com/foo"},
		{"https://www.example.com/foo/", "https://example.com/foo"},
		{"HTTPS://Example.com/Foo?utm_source=x&utm_medium=y", "https://example.com/Foo"},
		{"https://example.com/foo?id=1&utm_campaign=z&fbclid=abc", "https://example.com/foo?id=1"},
		{"https://example.com/foo#section", "https://example.com/foo"},
		{"https://m.bbc.com/news/123/", "https://bbc.com/news/123"},
		{"https://amp.cnn.com/article", "https://cnn.com/article"},
		{"not a url", "not a url"},
	}
	for _, c := range cases {
		got := CanonicalURL(c.in)
		if got != c.want {
			t.Errorf("CanonicalURL(%q) = %q, want %q", c.in, got, c.want)
		}
	}
}

func TestNormalizeHeadline(t *testing.T) {
	cases := []struct {
		in, want string
	}{
		{"", ""},
		{"Hello, World!", "hello world"},
		{"  Multiple   Spaces  ", "multiple spaces"},
		{"Nintendo's Switch 2 — Day One!", "nintendo s switch 2 day one"},
		{"BREAKING: Foo bar", "breaking foo bar"},
	}
	for _, c := range cases {
		got := NormalizeHeadline(c.in)
		if got != c.want {
			t.Errorf("NormalizeHeadline(%q) = %q, want %q", c.in, got, c.want)
		}
	}
}
