Aller au contenu

Utilisateur:Juju2004/Brouillons/botdfn.py/tests.py

Une page de Wikipédia, l'encyclopédie libre.
# -*- 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&nbsp;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&nbsp;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)