예제 #1
0
파일: coleccion.py 프로젝트: dued/dued
 def rutas_de_subcolecciones_pueden_tener_puntos(self):
     hoja = Coleccion("hoja", self.artefacto)
     hoja.configurar({"clave": "hoja-valor"})
     medio = Coleccion("medio", hoja)
     raiz = Coleccion("raiz", medio)
     config = raiz.configuracion("medio.hoja.artefacto")
     assert config == {"clave": "hoja-valor"}
예제 #2
0
파일: coleccion.py 프로젝트: dued/dued
 def subcolecciones_hermanos_ignoradas(self):
     interior = Coleccion("interior", self.artefacto)
     interior.configurar({"foo": "hola"})
     interios2 = Coleccion("interios2",
                           Artefacto(_func, nombre="artefacto2"))
     interios2.configurar({"foo": "nop"})
     raiz = Coleccion(interior, interios2)
     assert raiz.configuracion("interior.artefacto")["foo"] == "hola"
     assert raiz.configuracion("interios2.artefacto2")["foo"] == "nop"
예제 #3
0
파일: coleccion.py 프로젝트: dued/dued
 def acceso_fusiona_desde_subcolecciones(self):
     interior = Coleccion("interior", self.artefacto)
     interior.configurar({"foo": "bar"})
     self.raiz.configurar({"biz": "baz"})
     # With no interior coleccion
     assert set(self.raiz.configuracion().keys()) == {"biz"}
     # With interior coleccion
     self.raiz.ad_coleccion(interior)
     claves = set(self.raiz.configuracion("interior.artefacto").keys())
     assert claves == {"foo", "biz"}
예제 #4
0
파일: coleccion.py 프로젝트: dued/dued
 def padres_sobrescriben_a_hijos_en_el_camino(self):
     interior = Coleccion("interior", self.artefacto)
     interior.configurar({"foo": "interior"})
     self.raiz.ad_coleccion(interior)
     # Antes de actualizar la configuración coleccion raiz, refleja el int
     assert self.raiz.configuracion(
         "interior.artefacto")["foo"] == "interior"
     self.raiz.configurar({"foo": "exterior"})
     # Después, refleja el exterior (ya que ahora anulaciones)
     assert self.raiz.configuracion(
         "interior.artefacto")["foo"] == "exterior"
예제 #5
0
파일: coleccion.py 프로젝트: dued/dued
 def claves_no_tienen_que_existir_en_la_ruta_completa(self):
     # Un poco duplica cosas anteriores; bah Clave solo almacenada
     # en hoja
     hoja = Coleccion("hoja", self.artefacto)
     hoja.configurar({"clave": "hoja-valor"})
     medio = Coleccion("medio", hoja)
     raiz = Coleccion("raiz", medio)
     config = raiz.configuracion("medio.hoja.artefacto")
     assert config == {"clave": "hoja-valor"}
     # Clave almacenada en medio + hoja pero no raíz
     medio.configurar({"clave": "soo"})
     assert raiz.configuracion("medio.hoja.artefacto") == {
         "clave": "soo"
     }
예제 #6
0
파일: coleccion.py 프로젝트: dued/dued
    class configuracion:
        "metodos de configuración"

        def setup(self):
            self.raiz = Coleccion()
            self.artefacto = Artefacto(_func, nombre="artefacto")

        def seteo_y_obtencion_basico(self):
            self.raiz.configurar({"foo": "bar"})
            assert self.raiz.configuracion() == {"foo": "bar"}

        def configurar_realiza_la_fusion(self):
            self.raiz.configurar({"foo": "bar"})
            assert self.raiz.configuracion()["foo"] == "bar"
            self.raiz.configurar({"biz": "baz"})
            assert set(self.raiz.configuracion().keys()), {"foo" == "biz"}

        def configurar_la_combinacion_es_recursivo_para_dic_anidados(self):
            self.raiz.configurar({"foo": "bar", "biz": {"baz": "boz"}})
            self.raiz.configurar({"biz": {"otrobaz": "otroboz"}})
            c = self.raiz.configuracion()
            assert c["biz"]["baz"] == "boz"
            assert c["biz"]["otrobaz"] == "otroboz"

        def configurar_permite_sobrescribir(self):
            self.raiz.configurar({"foo": "one"})
            assert self.raiz.configuracion()["foo"] == "one"
            self.raiz.configurar({"foo": "two"})
            assert self.raiz.configuracion()["foo"] == "two"

        def devuelve_llamada_dic(self):
            assert self.raiz.configuracion() == {}
            self.raiz.configurar({"foo": "bar"})
            assert self.raiz.configuracion() == {"foo": "bar"}

        def acceso_fusiona_desde_subcolecciones(self):
            interior = Coleccion("interior", self.artefacto)
            interior.configurar({"foo": "bar"})
            self.raiz.configurar({"biz": "baz"})
            # With no interior coleccion
            assert set(self.raiz.configuracion().keys()) == {"biz"}
            # With interior coleccion
            self.raiz.ad_coleccion(interior)
            claves = set(self.raiz.configuracion("interior.artefacto").keys())
            assert claves == {"foo", "biz"}

        def padres_sobrescriben_a_hijos_en_el_camino(self):
            interior = Coleccion("interior", self.artefacto)
            interior.configurar({"foo": "interior"})
            self.raiz.ad_coleccion(interior)
            # Antes de actualizar la configuración coleccion raiz, refleja el int
            assert self.raiz.configuracion(
                "interior.artefacto")["foo"] == "interior"
            self.raiz.configurar({"foo": "exterior"})
            # Después, refleja el exterior (ya que ahora anulaciones)
            assert self.raiz.configuracion(
                "interior.artefacto")["foo"] == "exterior"

        def subcolecciones_hermanos_ignoradas(self):
            interior = Coleccion("interior", self.artefacto)
            interior.configurar({"foo": "hola"})
            interios2 = Coleccion("interios2",
                                  Artefacto(_func, nombre="artefacto2"))
            interios2.configurar({"foo": "nop"})
            raiz = Coleccion(interior, interios2)
            assert raiz.configuracion("interior.artefacto")["foo"] == "hola"
            assert raiz.configuracion("interios2.artefacto2")["foo"] == "nop"

        def rutas_de_subcolecciones_pueden_tener_puntos(self):
            hoja = Coleccion("hoja", self.artefacto)
            hoja.configurar({"clave": "hoja-valor"})
            medio = Coleccion("medio", hoja)
            raiz = Coleccion("raiz", medio)
            config = raiz.configuracion("medio.hoja.artefacto")
            assert config == {"clave": "hoja-valor"}

        def Lrutas_de_subcoleccion_no_válidas_resultan_en_KeyError(self):
            # Directamente no válido
            with raises(KeyError):
                Coleccion("bah").configuracion("nop.artefacto")
            # Existe pero el nivel es incorrecto (debería ser
            # 'root.artefacto', no solo 'artefacto')
            interior = Coleccion("interior", self.artefacto)
            with raises(KeyError):
                Coleccion("raiz", interior).configuracion("artefacto")

        def claves_no_tienen_que_existir_en_la_ruta_completa(self):
            # Un poco duplica cosas anteriores; bah Clave solo almacenada
            # en hoja
            hoja = Coleccion("hoja", self.artefacto)
            hoja.configurar({"clave": "hoja-valor"})
            medio = Coleccion("medio", hoja)
            raiz = Coleccion("raiz", medio)
            config = raiz.configuracion("medio.hoja.artefacto")
            assert config == {"clave": "hoja-valor"}
            # Clave almacenada en medio + hoja pero no raíz
            medio.configurar({"clave": "soo"})
            assert raiz.configuracion("medio.hoja.artefacto") == {
                "clave": "soo"
            }