[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / textwheel / tests / simpletest / nettoyer_raccourcis_typo.php
diff --git a/www/plugins-dist/textwheel/tests/simpletest/nettoyer_raccourcis_typo.php b/www/plugins-dist/textwheel/tests/simpletest/nettoyer_raccourcis_typo.php
new file mode 100644 (file)
index 0000000..446d90f
--- /dev/null
@@ -0,0 +1,197 @@
+<?php
+
+require_once('lanceur_spip.php');
+
+class Test_nettoyer_raccourcis_typo extends SpipTest {
+
+       public function __construct() {
+               parent::__construct("Tests de nettoyer_raccourcis_typo()");
+               include_spip('inc/lien');
+               include_spip('inc/texte_mini');
+       }
+
+       /**
+        * @param array[] $data Collection of array with keys : [texte, couper, nettoyer]
+        */
+       protected function _testData(array $data) {
+               foreach ($data as $d) {
+                       $nettoyer = nettoyer_raccourcis_typo($d['texte']);
+                       $couper = couper($d['texte']);
+                       $this->_printTest($d, $nettoyer, $couper);
+               }
+       }
+
+
+       protected function _printTest(array $data, $nettoyer, $couper) {
+               $titre = isset($data['titre']) ? $data['titre'] : '';
+               if (!$this->assertEqual($nettoyer, $data['nettoyer'])) {
+                       $this->reporter->paintFormattedMessage("Nettoyer_raccourcis_typo | $titre. Texte -> Attendu -> Reçu");
+                       $this->reporter->paintFormattedMessage($data['texte']);
+                       $this->reporter->paintFormattedMessage($data['nettoyer']);
+                       $this->reporter->paintFormattedMessage($nettoyer);
+               }
+               if (!$this->assertEqual($couper, $data['couper'])) {
+                       $this->reporter->paintFormattedMessage("Couper | $titre. Texte -> Attendu -> Reçu");
+                       $this->reporter->paintFormattedMessage($data['texte']);
+                       $this->reporter->paintFormattedMessage($data['couper']);
+                       $this->reporter->paintFormattedMessage($couper);
+               }
+       }
+
+       function testNettoyerItalique(){
+               $this->_testData([[
+                       'texte' => 'Un mot {italique}',
+                       'couper' => 'Un mot italique',
+                       'nettoyer' => 'Un mot italique',
+               ],[
+                       'texte' => '{Un texte italique}',
+                       'couper' => 'Un texte italique',
+                       'nettoyer' => 'Un texte italique',
+               ]]);
+       }
+
+       function testNettoyerGras(){
+               $this->_testData([[
+                       'texte' => 'Un mot {{gras}}',
+                       'couper' => 'Un mot gras',
+                       'nettoyer' => 'Un mot gras',
+               ],[
+                       'texte' => '{{Un texte gras}}',
+                       'couper' => 'Un texte gras',
+                       'nettoyer' => 'Un texte gras',
+               ]]);
+       }
+
+
+       function testNettoyerIntertitre(){
+               $this->_testData([[
+                       'texte' => '{{{Un intertitre}}}',
+                       'couper' => 'Un intertitre',
+                       'nettoyer' => 'Un intertitre',
+               ],[
+                       'texte' => "Ligne\n\n{{{Un intertitre}}}\n\nLigne",
+                       'couper' => "Ligne\n\nUn intertitre\n\nLigne",
+                       'nettoyer' => "Ligne\n\nUn intertitre\n\nLigne",
+               ]]);
+       }
+
+       function testNettoyerLiens(){
+               $this->_testData([[
+                       'texte' => 'Un lien [interne->article1]',
+                       'couper' => 'Un lien interne',
+                       'nettoyer' => 'Un lien interne',
+               ],[
+                       'texte' => 'Un lien [externe->http://example.org]',
+                       'couper' => 'Un lien externe',
+                       'nettoyer' => 'Un lien externe',
+               ]]);
+       }
+
+       /**
+        * Les listes sont mises à plat
+        * 1 saut de ligne \n entre chaque, couper les réassemble en espace.
+        *
+        * @note
+        *    Avant SPIP 3.2, 1 saut de paragraphe \n\n entre chaque (couper le laissait).
+        */
+       function testNettoyerListes(){
+               $this->_testData([[
+                       'texte' =>
+                               "Une liste
+-* un
+-* deux
+-* trois
+",
+                       'couper' => "Une liste un deux trois",
+                       'nettoyer' => "Une liste\nun\ndeux\ntrois",
+               ],[
+                       'texte' =>
+                               "Une liste avec ligne
+
+-* un
+-* deux
+-* trois
+
+",
+                       'couper' => "Une liste avec ligne un deux trois",
+                       'nettoyer' => "Une liste avec ligne\nun\ndeux\ntrois",
+               ]]);
+       }
+
+       /**
+        * Les tableaux sont totalement supprimés.
+        * Enfin presque : remplacés par \n\n
+        * Le texte étant trimmé, \n en fins sont enlevés.
+        *
+        * @note
+        *     Avant SPIP 3.2, les tableaux n’étaient pas toujours correctement supprimés
+        */
+       function testNettoyerTableaux(){
+               $this->_testData([[
+                       // tableau sans sauts de ligne avant / après.
+                       'titre' => 'tableau sans sauts de ligne avant / après',
+                       'texte' =>
+                               "| {{colonneA}} | {{colonneB}} |
+| ligneA1 | ligneB1 |
+| ligneA2 | ligneB2 |",
+                       'couper' => "",
+                       'nettoyer' => "",
+               ],[
+                       'texte' =>
+                               "Un tableau sans ligne vide avant
+| {{colonneA}} | {{colonneB}} |
+| ligneA1 | ligneB1 |
+| ligneA2 | ligneB2 |
+",
+                       'couper' => "Un tableau sans ligne vide avant",
+                       'nettoyer' => "Un tableau sans ligne vide avant",
+               ],[
+                       'texte' =>
+                               "Un tableau avec ligne vide avant
+
+| {{colonneA}} | {{colonneB}} |
+| ligneA1 | ligneB1 |
+| ligneA2 | ligneB2 |
+",
+                       'couper' => "Un tableau avec ligne vide avant",
+                       'nettoyer' => "Un tableau avec ligne vide avant",
+               ],[
+                       'texte' =>
+                               "Un tableau avec ligne avant / après
+| {{colonneA}} | {{colonneB}} |
+| ligneA1 | ligneB1 |
+| ligneA2 | ligneB2 |
+Après
+",
+                       'couper' => "Un tableau avec ligne avant / après\n\nAprès",
+                       'nettoyer' => "Un tableau avec ligne avant / après\n\nAprès",
+               ]]);
+       }
+
+       /**
+        * Les notes sont supprimées.
+        *
+        * @note
+        *     Avant 3.2 la regexp pouvait tuer pcre sur des textes longs
+        *     ayant des notes mal fermées.
+        */
+       function testNettoyerNotes(){
+               $this->_testData([[
+                       'texte' => 'Une note bien fermée [[note 1]]',
+                       'couper' => 'Une note bien fermée',
+                       'nettoyer' => 'Une note bien fermée',
+               ],[
+                       'texte' => 'Une note mal fermée [[note 1]',
+                       'couper' => 'Une note mal fermée [[note 1]',
+                       'nettoyer' => 'Une note mal fermée [[note 1]',
+               ],[
+                       'texte' => 'Un lien dans une note [[note [lien->article1]]]',
+                       'couper' => 'Un lien dans une note',
+                       'nettoyer' => 'Un lien dans une note',
+               ],[
+                       'texte' => 'Lien et note ratée [[note [lien->article1]] ]',
+                       'couper' => 'Lien et note ratée [[note lien] ]',
+                       'nettoyer' => 'Lien et note ratée [[note lien] ]',
+               ]]);
+       }
+}
\ No newline at end of file