Utilisateur:Juju2004/Brouillons/botdfn.py/tests.py
Apparence
# -*- coding: utf-8 -*-
# Copyright (C) 2011 Juju2004
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#################################
# Batterie de tests pour botdfn #
#################################
import difflib
from botdfn import *
# code volontairement très simple pour réaliser les tests
# note : certaines chaînes de caractères sont empruntées à des articles de WP pour les tests. Ces articles (sous licence Commons) peuvent facilement être retrouvés par leur titre.
class dfnTester():
def __init__(self, inserter):
self.__inserter = inserter
self.__total = 0
self.__fails = 0
print ('>>>>>>>>>>>> Début des tests')
print ()
# affichage du résultat des courses
def __del__(self):
print ('>>>>>>>>>>>> Fin des tests')
print ('Échecs/total = {0}/{1}'.format(self.__fails, self.__total))
def testDfn(self, name, text1, title, text2):
text1Dfn = self.__inserter.process(text1, title)
print ('{0}. {1} (titre article = "{2}")'.format(self.__total+1, name.upper(), title))
print ('< '+'*'*60)
print (text1)
print ('> '+'*'*60)
print (text1Dfn)
print ('*'*60)
self.__testEquals(name, text1Dfn, text2)
print ('Err : '+inserter.getErrorsStr())
print()
def __testEquals(self, name, text1, text2):
self.__total += 1
if text1==text2:
print (name+'...ok')
else:
print (name+'...ERR !')
print (''.join(difflib.context_diff(text1, text2)))
self.__fails += 1
if __name__ == "__main__":
dfnName = 'dfn'
titleModifiers = ['DISPLAYTITLE:', 'Titre mis en forme|', 'Titre incorrect|']
templatesToNeutralize = ['e', 'lang']
templatesToExplore = ['Japonais']
inserter = dfnInserter(dfnName, titleModifiers, templatesToNeutralize, templatesToExplore)
tester = dfnTester(inserter)
text = """"""
tester.testDfn('Cas 0', text, 'logiciel libre', text)
text = """Un logiciel libre est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Cas sans titre', text, 'logiciel libre', text)
text = """Un '''logiciel libre''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=logiciel libre}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Cas de base', text, 'logiciel libre', result)
text = """Un '''logiciel libre''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Majuscules/minuscules', text, 'Logiciel Libre', result) # le résultat précédent
text = """Un '''logiciel libre''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Echec volontaire', text, 'Logiciellibre', text)
text = """{{Un}} '''logiciel''' est un [[logiciel]] {{dont l'utilisation, l'étude, {{la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin}} {{de}} garantir certaines libertés}} ('''logiciel libre''') {{à}} l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{Un}} '''logiciel''' est un [[logiciel]] {{dont l'utilisation, l'étude, {{la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin}} {{de}} garantir certaines libertés}} ({{dfn|1=logiciel libre}}) {{à}} l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Modèle imbriqués (hors modèle)', text, 'Logiciel libre', result)
text = """Un '''''logiciel libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=''logiciel libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('gras et italiques', text, 'logiciel libre', result)
text = """Un l'''logiciel libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un l'''logiciel libre'' (pour les italiques, pas la grammaire !) ou {{dfn|1=''logiciel libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('faux gras', text, 'logiciel libre', result)
text = """Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou {{dfn|1=''logiciel{{e}} libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('neutralisation d\'un modèle {{e}}', text, 'logiciel{{e}} libre', result)
text = """Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{E}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou {{dfn|1=''logiciel{{E}} libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('neutralisation d\'un modèle, majuscules/minuscules', text, 'logiciel{{e}} libre', result)
text = """{{Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>.}}"""
result = """{{Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>.}}"""
tester.testDfn('Pas de remplacement car dans modèle', text, 'logiciel{{e}} libre', text)
text = """7{{e}} essai {{japonais|x='''titre {{ modèle }} '''|y=bar}}"""
result = """7{{e}} essai {{japonais|x={{dfn|1=titre {{ modèle }} }}|y=bar}}"""
tester.testDfn('test bizarre', text, 'titre {{ modèle }} ', result)
text = """{{japonais|Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont}} l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{japonais|Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou {{dfn|1=''logiciel{{e}} libre''}} est un [[logiciel]] dont}} l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Remplacement car dans modèle à explorer', text, 'logiciel{{e}} libre', result)
text = """{|japonais|Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont|} l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Pas de remplacement car dans un tableau', text, 'logiciel{{e}} libre', text)
text = """{|un tableau avant tout texte|}
Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{|un tableau avant tout texte|}
Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) ou {{dfn|1=''logiciel{{e}} libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Un tableau avant, saut de ligne', text, 'logiciel{{e}} libre', result)
text = """{|japonais|Un l'''logiciel{{e}} libre'' (pour les italiques, pas la grammaire !) }} ou '''''logiciel{{e}} libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Pas de remplacement car fausse fermeture du tableau', text, 'logiciel{{e}} libre', text)
text = """{{DISPLAYTITLE:logiciel{{e}} libre}}{|tableau |}
Un '''logiciel{{e}} libre''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{DISPLAYTITLE:logiciel{{e}} libre}}{|tableau |}
Un {{dfn|1=logiciel{{e}} libre}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Display title', text, 'logiciele libre', result)
text = """{{titre mis en forme|logiciel{{e}} libre}}{|tableau |}
Un '''logiciel{{e}} libre''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{titre mis en forme|logiciel{{e}} libre}}{|tableau |}
Un {{dfn|1=logiciel{{e}} libre}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Display title avec modèle', text, 'logiciele libre', result)
text = """Un '''{{lang|la|logiciel libre}}''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=logiciel libre|lang=la}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('lang', text, 'logiciel libre', result)
text = """Un '''{{lang|ltr|la|logiciel libre}}''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=logiciel libre|dir=ltr|lang=la}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('lang 2', text, 'logiciel libre', result)
text = """Un '''{{lang|la|texte=logiciel libre}}''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=logiciel libre|lang=la}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('lang 3', text, 'logiciel libre', result)
text = """Un '''{{lang|la|dir=rtl|texte=logiciel libre}}''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=logiciel libre|dir=rtl|lang=la}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('lang 4', text, 'logiciel libre', result)
text = """{{Voir homonymes|Élan (homonymie)|Éland|Orignal (homonymie)}}
{{Taxobox début | animal | Élan ou Orignal | Moose in lake.jpg | ''Alces alces'' }}
{{Taxobox | embranchement | Chordata }}
{{Taxobox | sous-embranchement | Vertebrata }}
{{Taxobox | classe | Mammalia }}
{{Taxobox | sous-classe | Theria }}
{{Taxobox | infra-classe | Eutheria }}
{{Taxobox | ordre | Artiodactyla }}
{{Taxobox | famille | Cervidae }}
{{Taxobox | sous-famille | Capreolinae }}
{{Taxobox taxon | animal | genre | Alces | [[John Edward Gray|Gray]], [[1821]] }}
{{Taxobox taxon | animal | espèce | Alces alces | ([[Carl von Linné|Linnaeus]], [[1758]]) }}
{{Taxobox répartition | animal | Moose distribution.png }}
{{Taxobox UICN | LC | | }}
{{Taxobox wikispecies | Alces_alces}}
{{Taxobox commons | Alces_alces}}
{{Taxobox fin}}
'''''{{lang|la|Alces alces}}''''', appelé '''orignal''' ou '''élan''' au sein de la [[francophonie]], est la plus grande des [[espèce]]s de [[Cervidae|cervidés]]. C'est le seul représentant du [[Genre (biologie)|genre]] '''''{{lang|la|Alces}}'''''.
"""
result = """{{Voir homonymes|Élan (homonymie)|Éland|Orignal (homonymie)}}
{{Taxobox début | animal | Élan ou Orignal | Moose in lake.jpg | ''Alces alces'' }}
{{Taxobox | embranchement | Chordata }}
{{Taxobox | sous-embranchement | Vertebrata }}
{{Taxobox | classe | Mammalia }}
{{Taxobox | sous-classe | Theria }}
{{Taxobox | infra-classe | Eutheria }}
{{Taxobox | ordre | Artiodactyla }}
{{Taxobox | famille | Cervidae }}
{{Taxobox | sous-famille | Capreolinae }}
{{Taxobox taxon | animal | genre | Alces | [[John Edward Gray|Gray]], [[1821]] }}
{{Taxobox taxon | animal | espèce | Alces alces | ([[Carl von Linné|Linnaeus]], [[1758]]) }}
{{Taxobox répartition | animal | Moose distribution.png }}
{{Taxobox UICN | LC | | }}
{{Taxobox wikispecies | Alces_alces}}
{{Taxobox commons | Alces_alces}}
{{Taxobox fin}}
{{dfn|1=''Alces alces''|lang=la}}, appelé '''orignal''' ou '''élan''' au sein de la [[francophonie]], est la plus grande des [[espèce]]s de [[Cervidae|cervidés]]. C'est le seul représentant du [[Genre (biologie)|genre]] '''''{{lang|la|Alces}}'''''.
"""
tester.testDfn('Alces alces (italiques, cas réel)', text, 'Alces alces', result)
text = """{{Voir homonymes|Némésis (homonymie)}}
'''Némésis''' est le nom donné à un hypothétique compagnon du [[Soleil]] formant avec celui-ci un [[étoile binaire|système binaire]] à très longue période.
Ce compagnon serait une étoile très peu lumineuse, voire une [[naine brune]] non détectée à ce jour.
Son [[orbite]] serait très [[excentricité orbitale|excentrique]], amenant celui-ci à s'approcher assez près du Soleil à chaque [[période de révolution|révolution]] (d'une durée d'environ 26 millions d'années). La proximité du compagnon causerait alors des perturbations dans le [[Nuage d'Oort]], amenant un certain nombre de [[comète]]s s'y trouvant à plonger vers le [[système solaire]] interne. Cet afflux de comètes dans la région où sont situées les [[planète]]s donnerait lieu à des risques accrus de collision entre ces comètes et la [[Terre]], et pourrait être responsable d'une grande partie des [[extinction massive|grandes extinctions des espèces vivantes]].
Le nom de Némésis est tiré de la [[mythologie grecque]], où il représente la [[Némésis|déesse de la vengeance]].
Cet astre hypothétique ne doit pas être confondu avec l'[[astéroïde]] [[(128) Némésis]]."""
result = """{{Voir homonymes|Némésis (homonymie)}}
{{dfn|1=Némésis}} est le nom donné à un hypothétique compagnon du [[Soleil]] formant avec celui-ci un [[étoile binaire|système binaire]] à très longue période.
Ce compagnon serait une étoile très peu lumineuse, voire une [[naine brune]] non détectée à ce jour.
Son [[orbite]] serait très [[excentricité orbitale|excentrique]], amenant celui-ci à s'approcher assez près du Soleil à chaque [[période de révolution|révolution]] (d'une durée d'environ 26 millions d'années). La proximité du compagnon causerait alors des perturbations dans le [[Nuage d'Oort]], amenant un certain nombre de [[comète]]s s'y trouvant à plonger vers le [[système solaire]] interne. Cet afflux de comètes dans la région où sont situées les [[planète]]s donnerait lieu à des risques accrus de collision entre ces comètes et la [[Terre]], et pourrait être responsable d'une grande partie des [[extinction massive|grandes extinctions des espèces vivantes]].
Le nom de Némésis est tiré de la [[mythologie grecque]], où il représente la [[Némésis|déesse de la vengeance]].
Cet astre hypothétique ne doit pas être confondu avec l'[[astéroïde]] [[(128) Némésis]]."""
tester.testDfn('Némésis (homonymie, cas réel)', text, 'Némésis (étoile)', result)
text = """'''Un '''logiciel libre''' est un [[logiciel]] dont l'utilisation''', l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Des gras autour (mais pas sur le titre)', text, 'logiciel libre', text)
text = """{{titre mis en forme|''logiciel'' libre}}
Un '''''logiciel'' libre''' est un [[logiciel]] dont l'utilisation''', l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{titre mis en forme|''logiciel'' libre}}
Un {{dfn|1=''logiciel'' libre}} est un [[logiciel]] dont l'utilisation''', l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Titre avec italiques', text, 'logiciel libre', result)
text = """Un '''[[logiciel]] [[libre]]''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un {{dfn|1=[[logiciel]] [[libre]]}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Cas de base', text, 'logiciel libre', result)
text = """{{titre mis en forme|''logiciel libre''}}
Un '''''logiciel libre''''' est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """{{titre mis en forme|''logiciel libre''}}
Un {{dfn|1=''logiciel libre''}} est un [[logiciel]] dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Titre d\'oeuvre, en italiques', text, 'logiciel libre', result)
text="""Un '''''logiciel libre''' est un [[logiciel]]'' dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
result = """Un ''{{dfn|1=logiciel libre}} est un [[logiciel]]'' dont l'utilisation, l'étude, la modification et la duplication en vue de sa diffusion sont permises, techniquement et légalement, afin de garantir certaines libertés à l'utilisateur<ref>http://www.gnu.org/philosophy/free-sw.fr.html</ref>."""
tester.testDfn('Italiques autour, avec départ en both', text, 'logiciel libre', result)