Aufgaben-Python/courses/javascript/07_regex_und_textverarbeitung/test_aufgabe.js

93 lines
4.4 KiB
JavaScript

// 🧪 JS 07: Testsuite für Reguläre Ausdrücke & Textverarbeitung
if (typeof assert === "undefined") {
var assert = require("assert");
}
// ==========================================
// 1. Tests für istGueltigeEmail
// ==========================================
assert.strictEqual(istGueltigeEmail("max@mustermann.de"), true, "max@mustermann.de sollte gültig sein");
assert.strictEqual(istGueltigeEmail("user.name+tag@sub.domain.org"), true, "E-Mail mit Subdomain und Plus-Tag sollte gültig sein");
assert.strictEqual(istGueltigeEmail("dev123@code.io"), true, "dev123@code.io sollte gültig sein");
assert.strictEqual(istGueltigeEmail("max@domain"), false, "E-Mail ohne TLD (.de, .com) sollte ungültig sein");
assert.strictEqual(istGueltigeEmail("@domain.com"), false, "E-Mail ohne Benutzername sollte ungültig sein");
assert.strictEqual(istGueltigeEmail("keine-email"), false, "Reiner Text sollte ungültig sein");
assert.strictEqual(istGueltigeEmail(""), false, "Leerer String sollte ungültig sein");
assert.strictEqual(istGueltigeEmail(null), false, "null sollte ungültig sein");
// ==========================================
// 2. Tests für findeTelefonnummern
// ==========================================
const textMitNummern = "Kontakt: +49 170 1234567 oder per Festnetz 030 / 123456. Kein Datum 2024.";
const nummern = findeTelefonnummern(textMitNummern);
assert.deepStrictEqual(
nummern,
["+49 170 1234567", "030 / 123456"],
"Sollte Mobil- und Festnetznummern finden"
);
const mobilText = "Mobil: 0171-1234567 und 089 98765432.";
assert.deepStrictEqual(
findeTelefonnummern(mobilText),
["0171-1234567", "089 98765432"],
"Sollte Bindestrich- und Leerzeichen-Format erkennen"
);
assert.deepStrictEqual(findeTelefonnummern("Keine Telefonnummer hier im Jahr 2025!"), [], "Sollte leeres Array bei keinen Treffern liefern");
assert.deepStrictEqual(findeTelefonnummern(""), [], "Leerer Text sollte [] liefern");
// ==========================================
// 3. Tests für extrahiereHashtags
// ==========================================
const post = "Lerne #javascript und #webdev mit modernen #es6_features!";
const tags = extrahiereHashtags(post);
assert.deepStrictEqual(
tags,
["#javascript", "#webdev", "#es6_features"],
"Sollte alle Hashtags im Text finden"
);
assert.deepStrictEqual(extrahiereHashtags("Ein normaler Satz ohne Tags."), [], "Ohne Hashtags sollte [] zurückkommen");
assert.deepStrictEqual(extrahiereHashtags(""), [], "Leerer String sollte [] zurückgeben");
// ==========================================
// 4. Tests für maskiereKreditkarte
// ==========================================
const kkText = "Meine Karte ist 1234-5678-9012-3456.";
assert.strictEqual(
maskiereKreditkarte(kkText),
"Meine Karte ist ****-****-****-3456.",
"16-stellige Karte mit Bindestrichen sollte maskiert werden"
);
const kkText2 = "Karten: 1111 2222 3333 4444 und 5555666677778888";
assert.strictEqual(
maskiereKreditkarte(kkText2),
"Karten: ****-****-****-4444 und ****-****-****-8888",
"Mehrere Karten mit Leerzeichen und durchgehend sollten maskiert werden"
);
assert.strictEqual(
maskiereKreditkarte("Keine Kreditkarte vorhanden."),
"Keine Kreditkarte vorhanden.",
"Text ohne Kreditkarten darf nicht verändert werden"
);
// ==========================================
// 5. Tests für istStarkesPasswort
// ==========================================
assert.strictEqual(istStarkesPasswort("Sicher123!"), true, "Sicher123! sollte stark sein");
assert.strictEqual(istStarkesPasswort("P@ssw0rd2024"), true, "P@ssw0rd2024 sollte stark sein");
assert.strictEqual(istStarkesPasswort("Mein#Geheimnis9"), true, "Mein#Geheimnis9 sollte stark sein");
assert.strictEqual(istStarkesPasswort("S1!a"), false, "Zu kurzes Passwort (< 8 Zeichen) sollte false liefern");
assert.strictEqual(istStarkesPasswort("sicher123!"), false, "Ohne Großbuchstaben sollte false liefern");
assert.strictEqual(istStarkesPasswort("SICHER123!"), false, "Ohne Kleinbuchstaben sollte false liefern");
assert.strictEqual(istStarkesPasswort("SicheresPasswort!"), false, "Ohne Zahl sollte false liefern");
assert.strictEqual(istStarkesPasswort("Sicher12345"), false, "Ohne Sonderzeichen sollte false liefern");
assert.strictEqual(istStarkesPasswort(""), false, "Leerer String sollte false liefern");
assert.strictEqual(istStarkesPasswort(null), false, "null sollte false liefern");
console.log("✅ Alle Tests in JS 07 (Regex & Textverarbeitung) erfolgreich bestanden!");