alert("x")'),
'markdown_to_html échappe le HTML brut'
);
assertNotContains(
''),
'markdown_to_html ne laisse passer aucune balise script'
);
// --- Gras et italique --------------------------------------------------------
assertEquals(
'gras',
markdown_to_html('**gras**'),
'markdown_to_html convertit **texte** en '
);
assertEquals(
'ital',
markdown_to_html('*ital*'),
'markdown_to_html convertit *texte* en '
);
// --- Liens Markdown ----------------------------------------------------------
assertEquals(
'exemple',
markdown_to_html('[exemple](https://exemple.com)'),
'markdown_to_html convertit un lien Markdown avec attributs de sécurité'
);
assertEquals(
'site',
markdown_to_html('[site](exemple.com)'),
'markdown_to_html ajoute http:// aux liens sans protocole'
);
// --- URLs brutes -------------------------------------------------------------
assertEquals(
'Visite https://exemple.com/page pour info',
markdown_to_html('Visite https://exemple.com/page pour info'),
'markdown_to_html rend les URLs http(s) brutes cliquables'
);
assertEquals(
'va sur o-k-i.net maintenant',
markdown_to_html('va sur o-k-i.net maintenant'),
'markdown_to_html rend les domaines nus cliquables (avec http://)'
);
assertEquals(
'version v1.2 dispo',
markdown_to_html('version v1.2 dispo'),
'markdown_to_html ne transforme pas un numéro de version en lien'
);
// --- URLs contenant « & » : pas de double encodage ---------------------------
// Le texte est échappé une seule fois : « & » devient « & », jamais « & »
assertEquals(
'Voir https://exemple.com/page?a=1&b=2 suite',
markdown_to_html('Voir https://exemple.com/page?a=1&b=2 suite'),
'markdown_to_html n\'encode pas deux fois le & des URLs brutes'
);
assertEquals(
'lien',
markdown_to_html('[lien](https://exemple.com/?x=1&y=2)'),
'markdown_to_html n\'encode pas deux fois le & des liens Markdown'
);
assertNotContains(
'&',
markdown_to_html('https://exemple.com/page?a=1&b=2'),
'markdown_to_html ne produit jamais de &'
);
// --- Listes ------------------------------------------------------------------
assertEquals(
"",
markdown_to_html("- a\n- b"),
'markdown_to_html convertit les listes à puces en uniquement'
);
assertEquals(
"\n- a
\n- b
\n
",
markdown_to_html("1. a\n2. b"),
'markdown_to_html convertit les listes numérotées en '
);
assertEquals(
"
\n\n- b
\n
\n",
markdown_to_html("- a\n1. b\n- c"),
'markdown_to_html sépare les listes de types différents'
);
assertEquals(
"
\ntexte",
markdown_to_html("- a\ntexte"),
'markdown_to_html ferme la liste avant le texte qui suit'
);
// --- Retours à la ligne ------------------------------------------------------
assertEquals(
"ligne1
\nligne2",
markdown_to_html("ligne1\nligne2"),
'markdown_to_html convertit les sauts de ligne en
'
);