# Pruebas de unidad - Marcadores (c) 2024 Baltasar MIT License <baltasarq@gmail.com>
import unittest
class Marcadores:
def __init__(self):
self._marcs = {}
@property
def num(self):
return len(self._marcs)
def inserta(self, nombre, url):
self._marcs[nombre] = url
def get(self, nombre):
return self._marcs.get(nombre)
def contiene(self, nombre):
return self.get(nombre) != None
@property
def nombres(self):
return self._marcs.keys()
@property
def todos(self):
return self._marcs.items()
class TestMarcadores(unittest.TestCase):
def setUp(self):
self._marcs = Marcadores()
self._nombres = ["Google", "Microsoft", "Amazon"]
self._no_nombres = ["eBay", "Wallapop", "OSNews"]
self._urls = ["www.google.com", "www.microsoft.com", "www.amazon.com"]
def test_vacio(self):
self.assertEqual(0, self._marcs.num)
def test_inserta_get(self):
for i, nombre in enumerate(self._nombres):
self._marcs.inserta(nombre, self._urls[i])
self.assertEqual(len(self._nombres), self._marcs.num)
for i, nombre in enumerate(self._nombres):
self.assertEqual(self._urls[i], self._marcs.get(nombre))
for no_nombre in self._no_nombres:
self.assertEqual(None, self._marcs.get(no_nombre))
def test_contiene(self):
for i, nombre in enumerate(self._nombres):
self._marcs.inserta(nombre, self._urls[i])
self.assertEqual(len(self._nombres), self._marcs.num)
for nombre in self._nombres:
self.assertTrue(self._marcs.contiene(nombre))
for no_nombre in self._no_nombres:
self.assertFalse(self._marcs.contiene(no_nombre))
def test_get_nombres(self):
for i, nombre in enumerate(self._nombres):
self._marcs.inserta(nombre, self._urls[i])
self.assertEqual(len(self._nombres), self._marcs.num)
self.assertEqual(self._nombres, list(self._marcs.nombres))
for i, nombre in enumerate(self._marcs.nombres):
self.assertEqual(self._marcs.get(nombre), self._urls[i])
def test_get_todos(self):
for i, nombre in enumerate(self._nombres):
self._marcs.inserta(nombre, self._urls[i])
self.assertEqual(len(self._nombres), len(self._marcs.todos))
for i, pair in enumerate(self._marcs.todos):
self.assertEqual(self._urls[i], pair[1])
self.assertEqual(self._nombres[i], pair[0])
if __name__ == "__main__":
unittest.main()