package dedup import ( "io" "strings" "testing" ) func TestHashAndBuffer_SameContentSameHash(t *testing.T) { h1, buf1, err := HashAndBuffer(strings.NewReader("identischer inhalt")) if err != nil { t.Fatal(err) } h2, buf2, err := HashAndBuffer(strings.NewReader("identischer inhalt")) if err != nil { t.Fatal(err) } if h1 != h2 { t.Fatalf("erwartet identischen hash für identischen inhalt, habe %q vs %q", h1, h2) } got1, _ := io.ReadAll(buf1) got2, _ := io.ReadAll(buf2) if string(got1) != "identischer inhalt" || string(got2) != "identischer inhalt" { t.Fatal("buffered reader liefert nicht denselben inhalt zurück wie der ursprüngliche klartext") } } func TestHashAndBuffer_DifferentContentDifferentHash(t *testing.T) { h1, _, err := HashAndBuffer(strings.NewReader("nachricht a")) if err != nil { t.Fatal(err) } h2, _, err := HashAndBuffer(strings.NewReader("nachricht b")) if err != nil { t.Fatal(err) } if h1 == h2 { t.Fatal("unterschiedlicher inhalt hätte unterschiedlichen hash liefern müssen") } } // TestHashAndBuffer_SlightlyDifferentContentDifferentHash ist die // geforderte Pflichtprüfung 3: knapp unterschiedliche Nachrichten // werden korrekt NICHT als Duplikat erkannt. func TestHashAndBuffer_SlightlyDifferentContentDifferentHash(t *testing.T) { h1, _, err := HashAndBuffer(strings.NewReader("Betreff: Test\r\n\r\nInhalt der Nachricht.")) if err != nil { t.Fatal(err) } h2, _, err := HashAndBuffer(strings.NewReader("Betreff: Test\r\n\r\nInhalt der Nachricht,")) if err != nil { t.Fatal(err) } if h1 == h2 { t.Fatal("ein einziges abweichendes zeichen hätte den hash ändern müssen") } }