def test_compare_meme_agendas(self):
		"""Teste la comparaison entre 2 agendas identiques"""
		a1 = Agenda("lol", 2015)
		a1.ajouterCreneau(2015, 11, 11, 8, 24, CP.CM)
		a1.ajouterCreneau(2015, 11, 11, 26, 32, CP.TP)
		a1.ajouterCreneau(2015, 12, 10, 26, 32, CP.TD)
		d = Diff(a1, a1)
		d.comparer()
		self.assertEqual(d.moments, [])
	def test_compare_2_agendas_differents(self):
		"""Teste la comparaison entre 2 agendas identiques"""
		a1 = Agenda("agenda 1", 2015)
		a1.ajouterCreneau(2015, 11, 11, 8, 24, CP.CM)
		a1.ajouterCreneau(2015, 11, 11, 26, 32, CP.TP)
		a1.ajouterCreneau(2015, 12, 10, 26, 32, CP.TD)
		
		a2 = Agenda("agenda 2", 2015)
		a2.ajouterCreneau(2015, 11, 11, 8, 24, CP.CM)
		a2.ajouterCreneau(2015, 11, 11, 26, 32, CP.TP)
		a2.ajouterCreneau(2015, 8, 10, 26, 32, CP.TD)
		
		d = Diff(a1, a2)
		d.comparer()
class Test_Agenda(unittest.TestCase):
	"""
	La classe qui teste la classe Agenda
	@author : Laurent Bardoux p1108365
	"""
	
	def setUp(self):
		"""A faire avant chaque test"""
		self.cible = Agenda("testons", 2016)
	#fin setUp
	
	
	def test_init(self):
		"""Teste le constructeur"""
		self.assertEqual(self.cible._nom, "testons")
		self.assertTrue(self.cible._pere is None)
		self.assertEqual(len(self.cible._listeFils), 0)
		self.assertEqual(len(self.cible._listeAnnees), 1)
	#fin test_init
	
	
	def test_pere(self):
		"""Testes les propriétés liés à self._pere"""
		self.assertIsNone(self.cible.pere)
		self.cible.pere = 25
		self.assertIsNotNone(self.cible.pere)
		self.cible.pere = Agenda("Padre !", 2015)
		self.assertIsNotNone(self.cible.pere)
	#fin test_pere
	
	
	def test_nom(self):
		"""Tests sur nom via les propriétés"""
		self.assertEqual(self.cible.nom, "testons")
		self.cible.nom = 25
		self.assertEqual(self.cible.nom, "testons")
		self.cible.nom = "bonjour"
		self.assertEqual(self.cible.nom, "bonjour")
	#fin test_nom
	
	
	def test_listeAnnees(self):
		"""Teste la propriété get de _listeAnnees"""
		self.assertTrue(type(self.cible.listeAnnees) is list)
	#test_listeAnnees
	
	
	def test_listeFils(self):
		"""Tests sur listeFils via les propriétés"""
		self.assertTrue(type(self.cible.listeFils) is list)
		self.cible.listeFils = 18
		self.assertTrue(type(self.cible.listeFils) is list)
	#fin test_listeFils
	
	
	def test_insertionFils(self):
		"""Test des insertions d'agendas"""
		fils1 = Agenda("fiston1", 2010)
		fils2 = Agenda("fiston2", 1850)
		self.cible.insererFils(fils1, fils2)
		self.assertEqual(len(self.cible.listeFils), 2)
		self.assertFalse(fils1.pere is None)
		self.assertFalse(fils2.pere is None)
	#fin test_insertionFils
	
	
	def test_retirerFils(self):
		"""Test du retrait des fils dans la listeFils"""
		fils1 = Agenda("fiston1", 2015)
		fils2 = Agenda("fiston2", 2015)
		self.cible.insererFils(fils1, fils2)
		self.cible.retirerFils("fiston1")
		self.assertEqual(len(self.cible.listeFils), 1)
	#fin test_retirerFils
	
	
	def test_ajouterCreneau_ok(self):
		"""Teste l'ajout d'un creneau quand tout va bien"""
		self.assertIsNotNone(self.cible.ajouterCreneau(2016, 5, 24, 12, 18))
		self.assertEqual(self.cible._listeAnnees[0].nbCreneaux, 1)
	#test_ajouterCreneau_ok
	
	
	def test_ajouterCreneau_ok_vivification(self):
		"""Teste l'ajout d'un creneau quand tout va bien, avec auto-vivification"""
		self.assertIsNotNone(self.cible.ajouterCreneau(2015, 5, 24, 12, 18))
		self.assertEqual(len(self.cible._listeAnnees), 2)
	#test_ajouterCreneau_ok_vivification
	
	
	def test_ajouterCreneau_echec_interne(self):
		"""
		Teste l'ajout d'un creneau en echec à cause d'une erreur d'argument
		dans l'arborescence
		"""
		with self.assertRaises(Exception):
			self.cible.ajouterCreneau(2008, 18, 15, 15, 18)
		#with
	#test_ajouterCreneau_echec_interne
	
	
	def test_supprimerCreneau_ok(self):
		"""Teste la suppression lorsque tout est ok"""
		c1 = self.cible.ajouterCreneau(2015, 5, 24, 12, 18)
		c2 = self.cible.ajouterCreneau(2015, 5, 24, 18, 24)
		self.cible.supprimerCreneau(2015, 5, 24, c1)
		self.assertEqual(self.cible._listeAnnees[0].nbCreneaux, 1)
	#test_supprimerCreneau_ok
	
	
	def test_supprimerCreneau_echec_local(self):
		"""Teste la suppression qu iéchoue à cause d'un mauvais numéro d'année"""
		c1 = self.cible.ajouterCreneau(2015, 5, 24, 12, 18)
		c2 = self.cible.ajouterCreneau(2015, 5, 24, 18, 24)
		with self.assertRaises(ValueError):
			self.cible.supprimerCreneau(2014, 15, 14, 25)
		#with
	#test_supprimerCreneau_echec_local
	
	
	def test_supprimerCreneau_echec_interne(self):
		"""Teste la suppression qui échoue plus bas à cause des arguments"""
		c1 = self.cible.ajouterCreneau(2015, 5, 24, 12, 18)
		c2 = self.cible.ajouterCreneau(2015, 5, 24, 18, 24)
		with self.assertRaises(ValueError):
			self.cible.supprimerCreneau(2015, 18, 24, None)
		#with
	#test_supprimerCreneau_echec_interne
	
	
	def test_recupererSemaineParNumJour_ok(self):
		"""Teste la récupération en succes"""
		test = self.cible.recupererSemaineParNumJour(2016, 5, 5)
		self.assertIsNotNone(test)
	#test_recupererSemaineParNumJour_ok
	
	
	def test_recupererSemaineParNumJour_echec(self):
		"""Teste la récupération en echec"""
		with self.assertRaises(Exception):
			self.cible.recupererSemaineParNumJour(2016, 35, 5)
		#with
	#test_recupererSemaineParNumJour_echec
	
	
	def test_recupererJour_ok(self):
		"""Teste la recuperation d'un jour avec de bons arguments"""
		#cela renverra forcément quelque chose
		listeMois = [i+1 for i in range(12)]
		listeJourCommuns = [i+1 for i in range(27)]
		anneecibles = [2005, 2016, 2012]
		
		for i in anneecibles:
			for j in listeMois:
				for k in listeJourCommuns:
					self.assertTrue(type(self.cible.recupererJour(i, j, k)) is list)
				#for
			#for
		#for
	#test_recupererJour_ok
	
	
	def test_recupererJour_echec(self):
		"""Teste la recuperation d'un jour en echec si les arguments sont mauvais"""
		for i in [-1, 0, 13]:
			with self.assertRaises(ValueError):
				self.cible.recupererJour(2015, i, 15)
	def setUp(self):
		"""A faire avant chaque test"""
		self.cible = Agenda("testons", 2016)