public void ObservarObjetoDatos() { IFabrica fabrica = new FabricaNotificacion(); IObjetoDatos od1 = Helper.Crear(HelperTipo.ObtenerTipo2(), fabrica); IObjetoDatos od2 = Helper.Crear(HelperTipo.ObtenerTipo2()); Observable observable = ((ObjetoBase)od1).Observable(); Observador observador = new Observador(od2); observable.Agregar(observador); Helper.Construir(od1, 2, 5); Evaluar.Comparar(od1, od2); od1.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[4]); od1.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[3]); od1.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[2]); od1.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[1]); od1.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[0]); od1.RemoverObjetoDatos("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem")[4]); od1.RemoverObjetoDatos("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem")[3]); od1.RemoverObjetoDatos("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem")[2]); od1.RemoverObjetoDatos("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem")[1]); od1.RemoverObjetoDatos("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem", od1.ObtenerColeccion("ReferenciaObjetoDatos/ReferenciaObjetoDatosItem")[0]); Evaluar.Comparar(od1, od2); od1.EstablecerObjetoDatos("ReferenciaObjetoDatos", null); od1.EstablecerObjetoDatos("ReferenciaObjetoDatos2", null); Evaluar.Comparar(od1, od2); }
public void EvaluarObjetoDatosComplejoRemoverUnItem() { IObjetoDatos od = Helper.Crear(_tipox); Helper.Construir(od, 1, 3); od.RemoverObjetoDatos("ReferenciaObjetoDatosItem", od.ObtenerColeccion("ReferenciaObjetoDatosItem")[0]); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 2); }
public void EvaluarObjetoDatosComplejoRemoverDosItems() { IObjetoDatos od = Helper.Crear(_tipox); Helper.Construir(od, 1, 3); IObjetoDatos primerItem = od.ObtenerColeccion("ReferenciaObjetoDatosItem")[0]; IObjetoDatos segundoItem = od.ObtenerColeccion("ReferenciaObjetoDatosItem")[1]; od.RemoverObjetoDatos("ReferenciaObjetoDatosItem", primerItem); od.RemoverObjetoDatos("ReferenciaObjetoDatosItem", segundoItem); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 1); }
private IMetodoEscritura Crear(IObjetoDatos propietario, IPropiedad propiedad, int indice) { IMetodoEscritura metodo; IObjetoDatos od; int refid; int propietarioid; if (propiedad.Cardinalidad >= Cardinalidad.Muchos) { od = propietario.ObtenerColeccion(propiedad)[indice]; } else { od = propietario.ObtenerObjetoDatos(propiedad); } refid = _stack.Obtener(od); propietarioid = _stack.Obtener(propietario); if (propiedad.Asociacion == Asociacion.Composicion) { metodo = new MetodoEscrituraReferencia(this, _escritor, od, refid, propietarioid, propiedad); } else { metodo = new MetodoEscrituraAsociacion(this, _escritor, propietarioid, propiedad, refid); _od.Add(od); } return(metodo); }
private static IObjetoDatos ResolverReferencia(IObjetoDatos od, string ruta) { IObjetoDatos referencia = default(IObjetoDatos); IPropiedad propiedad = null; string[] pasos = ruta.Split(new char[] { '.', '[', ']' }); int indice; propiedad = od.Tipo.ObtenerPropiedad(pasos[0]); if (pasos.Length == 1) { referencia = od.ObtenerObjetoDatos(propiedad); } else if (int.TryParse(pasos[1], out indice)) { referencia = od.ObtenerColeccion(propiedad)[indice]; } else { referencia = ResolverReferencia(od, propiedad, pasos[1]); } return(referencia); }
public void EvaluarObjetoDatosComplejoItemsIgualATres() { IObjetoDatos od = Helper.Crear(_tipox); //ConstruirObjetoDatosComplejo(); Helper.Construir(od, 1, 3); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 3); }
private void EscribirColeccion(IPropiedad propiedad) { int longitud = _od.ObtenerColeccion(propiedad).Longitud; for (int i = 0; i <= (longitud - 1); i++) { _modelo.Crear(_od, propiedad, i).Escribir(); } }
public static void Construir(IObjetoDatos od, int niveles, int items) { if (od.Tipo.ContienePropiedad("atributoId")) { od.EstablecerInteger("atributoId", ++_id); } Construir(od, od.Tipo.Propiedades, niveles, items); if (od.Tipo["ReferenciaObjetoDatos2"] != null) { od.EstablecerObjetoDatos("ReferenciaObjetoDatos2", _od); } if (od.Tipo["ReferenciaObjetoDatosItem2"] != null && od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud > 0) { od.EstablecerObjetoDatos("ReferenciaObjetoDatosItem2", od.ObtenerColeccion("ReferenciaObjetoDatosItem")[0]); } }
private void CrearObjeto(NodoReferencia nodo) { IObjetoDatos od = ((NodoObjeto)nodo.Padre).Objeto.ObjetoDatos; IPropiedad propiedad = nodo.Propiedad; // crear nodos hijos if (propiedad.Cardinalidad >= Cardinalidad.Muchos) { CrearObjeto(nodo, od.ObtenerColeccion(propiedad)); } else { CrearObjeto(nodo, od.ObtenerObjetoDatos(propiedad)); } }
private static IObjetoDatos ResolverReferencia(IObjetoDatos od, IPropiedad propiedad, string parametro) { IObjetoDatos referencia = null; string[] pasos = parametro.Split(new char[] { '=' }); if (pasos.GetLength(0) > 1) { var filtro = from item in od.ObtenerColeccion(propiedad) where referencia.Obtener(pasos[0]).ToString().Equals(pasos[1]) select item; referencia = filtro.FirstOrDefault(); } return(referencia); }
public void DeshacerCambiosEnObjetoDatosX() { // arrange Log controlador = new Log(); //FabricaHistorial fabrica = new FabricaHistorial(); IFabrica fabrica = new FabricaHistorial(controlador); IObjetoDatos od = fabrica.Crear(HelperTipo.ObtenerTipo2()); // act //ConstruirObjetoDatosComplejo(od, 2); //od.CrearObjetoDatos("ReferenciaObjetoDatos"); //od.CrearObjetoDatos("ReferenciaObjetoDatosItem"); Helper.Construir(od, 1); // deshacer controlador.Deshacer(); Assert.IsNull(od.ObtenerObjetoDatos("ReferenciaObjetoDatos"), "Se esperaba null"); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 0, "Se esperaba cero."); }
private static void EstablecerAtributoRuta(string ruta, IObjetoDatos od) { if (od == null) { return; } if (od.Tipo.ContienePropiedad("ruta")) { od.EstablecerString("ruta", ruta); } foreach (IPropiedad referencia in od.Tipo.Propiedades.Where((item) => !item.Tipo.EsTipoDeDato)) { if (referencia.EsColeccion) { EstablecerAtributoRuta(string.Format("{0}/{1}", ruta, referencia.Nombre), od.ObtenerColeccion(referencia)); } else { EstablecerAtributoRuta(string.Format("{0}/{1}", ruta, referencia.Nombre), od.ObtenerObjetoDatos(referencia)); } } }
public void CrearDiagramaComposicion() { IObjetoDatos od = HelperDiagrama.CrearObjetoDatosX(); Helper.Construir(od, 2, 5); HelperDiagrama.EstablecerAtributoRuta(od); // establecer referencia2 od.EstablecerObjetoDatos("ReferenciaObjetoDatosItem2", od.ObtenerColeccion("ReferenciaObjetoDatosItem")[0]); BuilderDiagrama helper = new BuilderDiagrama(); Diagrama diag = helper.Crear(od); IPropiedad prop1 = od.Tipo.ObtenerPropiedad("ReferenciaObjetoDatos"); IPropiedad prop2 = od.Tipo.ObtenerPropiedad("ReferenciaObjetoDatosItem"); IPropiedad prop3 = od.Tipo.ObtenerPropiedad("ReferenciaObjetoDatos2"); IPropiedad prop4 = od.Tipo.ObtenerPropiedad("ReferenciaObjetoDatosItem2"); IObjetoDatos od1 = od.ObtenerObjetoDatos(prop1); IObjetoDatos od4 = od.ObtenerObjetoDatos(prop4); IObjetoDatos item1 = od.ObtenerColeccion(prop2)[0]; IObjetoDatos item2 = od.ObtenerColeccion(prop2)[1]; IObjetoDatos item3 = od.ObtenerColeccion(prop2)[2]; NodoReferencia nodoprop1 = (NodoReferencia)diag.Root.Nodos[0]; NodoReferencia nodoprop2 = (NodoReferencia)diag.Root.Nodos[1]; NodoReferencia nodoprop3 = (NodoReferencia)diag.Root.Nodos[2]; NodoReferencia nodoprop4 = (NodoReferencia)diag.Root.Nodos[3]; NodoObjeto nodoobj1 = (NodoObjeto)nodoprop1.Nodos[0]; NodoObjeto nodoobj4 = (NodoObjeto)nodoprop4.Nodos[0]; NodoObjeto nodoitem1 = (NodoObjeto)nodoprop2.Nodos[0]; NodoObjeto nodoitem2 = (NodoObjeto)nodoprop2.Nodos[1]; NodoObjeto nodoitem3 = (NodoObjeto)nodoprop2.Nodos[2]; Assert.IsNotNull(diag.Root); Assert.AreEqual(od, diag.Root.Objeto.ObjetoDatos); Assert.IsNotNull(nodoprop1); Assert.IsNotNull(prop1); Assert.AreEqual(prop1, nodoprop1.Propiedad); Assert.IsNotNull(nodoobj1); Assert.IsNotNull(od1); Assert.AreEqual(od1, nodoobj1.Objeto.ObjetoDatos); Assert.AreEqual("/ReferenciaObjetoDatos", nodoobj1.Objeto.Propietario); Assert.IsNotNull(prop3); Assert.IsNotNull(nodoprop3); Assert.AreEqual(prop3, nodoprop3.Propiedad); Assert.IsNotNull(nodoitem1); Assert.IsNotNull(item1); Assert.AreEqual(item1, nodoitem1.Objeto.ObjetoDatos); Assert.AreEqual("/ReferenciaObjetoDatosItem[0]", nodoitem1.Objeto.Propietario); Assert.IsNotNull(nodoitem2); Assert.IsNotNull(item2); Assert.AreEqual(item2, nodoitem2.Objeto.ObjetoDatos); Assert.AreEqual("/ReferenciaObjetoDatosItem[1]", nodoitem2.Objeto.Propietario); Assert.IsNotNull(nodoitem3); Assert.IsNotNull(item3); Assert.AreEqual(item3, nodoitem3.Objeto.ObjetoDatos); Assert.AreEqual("/ReferenciaObjetoDatosItem[2]", nodoitem3.Objeto.Propietario); // comprobar referencia agregacion Assert.IsNotNull(prop3); Assert.IsNotNull(nodoprop3); Assert.AreEqual(prop3, nodoprop3.Propiedad); Assert.AreEqual(od4, item1); Assert.IsNotNull(nodoobj4); Assert.AreEqual(item1, nodoobj4.Objeto.ObjetoDatos); Assert.AreEqual("/ReferenciaObjetoDatosItem[0]", nodoobj4.Objeto.Propietario); }
public void RecuperarInstantaneaEnObjetoDatosX() { // arrange Log log = new Log(); IFabrica fabrica = new FabricaHistorial(log); IObjetoDatos od = fabrica.Crear(HelperTipo.ObtenerTipo2()); // act var instantanea1 = log.CrearInstantanea(); od.CrearObjetoDatos("ReferenciaObjetoDatos"); var instantanea2 = log.CrearInstantanea(); od.CrearObjetoDatos("ReferenciaObjetoDatosItem"); var instantanea3 = log.CrearInstantanea(); od.CrearObjetoDatos("ReferenciaObjetoDatosItem"); var instantanea4 = log.CrearInstantanea(); od.CrearObjetoDatos("ReferenciaObjetoDatosItem[0]/ReferenciaObjetoDatos"); var instantanea5 = log.CrearInstantanea(); od.CrearObjetoDatos("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos"); var valorBoolean = od.Obtener("atributoBoolean"); var valorByte = od.Obtener("atributoByte"); var instantanea6 = log.CrearInstantanea(); od.EstablecerBoolean("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoBoolean", true); od.EstablecerByte("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoByte", byte.MaxValue); Assert.AreEqual(od.ObtenerBoolean("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoBoolean"), true); Assert.AreEqual(od.ObtenerByte("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoByte"), byte.MaxValue); // recuperar log.Recuperar(instantanea6); Assert.AreEqual(od.ObtenerBoolean("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoBoolean"), valorBoolean); Assert.AreEqual(od.ObtenerByte("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos/atributoByte"), valorByte); // recuperar log.Recuperar(instantanea5); Assert.IsNull(od.Obtener("ReferenciaObjetoDatosItem[1]/ReferenciaObjetoDatos")); // recuperar log.Recuperar(instantanea4); Assert.IsNull(od.Obtener("ReferenciaObjetoDatosItem[0]/ReferenciaObjetoDatos")); // recuperar log.Recuperar(instantanea3); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 1); // recuperar log.Recuperar(instantanea2); Assert.AreEqual(od.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, 0); // recuperar log.Recuperar(instantanea1); Assert.IsNull(od.Obtener("ReferenciaObjetoDatos")); }
public static void Comparar(IObjetoDatos od1, IObjetoDatos od2) { Assert.AreEqual(od1.ObtenerInteger("atributoId"), od2.ObtenerInteger("atributoId")); Assert.AreEqual(od1.ObtenerByte("atributoBoolean"), od2.ObtenerByte("atributoBoolean")); Assert.AreEqual(od1.ObtenerByte("atributoByte"), od2.ObtenerByte("atributoByte")); Assert.AreEqual(od1.ObtenerChar("atributoChar"), od2.ObtenerChar("atributoChar")); Assert.AreEqual(od1.ObtenerDateTime("atributoDateTime").Date, od2.ObtenerDateTime("atributoDateTime").Date); Assert.AreEqual(od1.ObtenerDateTime("atributoDateTime").Hour, od2.ObtenerDateTime("atributoDateTime").Hour); Assert.AreEqual(od1.ObtenerDateTime("atributoDateTime").Minute, od2.ObtenerDateTime("atributoDateTime").Minute); Assert.AreEqual(od1.ObtenerDateTime("atributoDateTime").Second, od2.ObtenerDateTime("atributoDateTime").Second); Assert.AreEqual(od1.ObtenerDecimal("atributoDecimal"), od2.ObtenerDecimal("atributoDecimal")); Assert.AreEqual(od1.ObtenerDouble("atributoDouble"), od2.ObtenerDouble("atributoDouble")); Assert.AreEqual(od1.ObtenerFloat("atributoFloat"), od2.ObtenerFloat("atributoFloat")); Assert.AreEqual(od1.ObtenerInteger("atributoInteger"), od2.ObtenerInteger("atributoInteger")); Assert.AreEqual(od1.ObtenerLong("atributoLong"), od2.ObtenerLong("atributoLong")); Assert.AreEqual(od1.ObtenerSByte("atributoSByte"), od2.ObtenerSByte("atributoSByte")); Assert.AreEqual(od1.ObtenerShort("atributoShort"), od2.ObtenerShort("atributoShort")); Assert.AreEqual(od1.ObtenerString("atributoString"), od2.ObtenerString("atributoString")); Assert.AreEqual(od1.ObtenerUShort("atributoUShort"), od2.ObtenerUShort("atributoUShort")); Assert.AreEqual(od1.ObtenerUInteger("atributoUInteger"), od2.ObtenerUInteger("atributoUInteger")); Assert.AreEqual(od1.ObtenerULong("atributoULong"), od2.ObtenerULong("atributoULong")); Assert.AreEqual(od1.ObtenerObjetoDatos("ReferenciaObjetoDatos") != null, od2.ObtenerObjetoDatos("ReferenciaObjetoDatos") != null); Assert.AreEqual(od1.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud, od2.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud); if (od1.ObtenerObjetoDatos("ReferenciaObjetoDatos") != null && od2.ObtenerObjetoDatos("ReferenciaObjetoDatos") != null) { Comparar(od1.ObtenerObjetoDatos("ReferenciaObjetoDatos"), od2.ObtenerObjetoDatos("ReferenciaObjetoDatos")); } for (int i = 0; i < od1.ObtenerColeccion("ReferenciaObjetoDatosItem").Longitud; i++) { Comparar(od1.ObtenerColeccion("ReferenciaObjetoDatosItem")[i], od2.ObtenerColeccion("ReferenciaObjetoDatosItem")[i]); } // compracion tipo2 if (od1.Tipo.ObtenerPropiedad("ReferenciaObjetoDatos2") == null) { return; } Assert.AreEqual(od1.ObtenerObjetoDatos("ReferenciaObjetoDatos2") != null, od2.ObtenerObjetoDatos("ReferenciaObjetoDatos2") != null); if (od1.ObtenerObjetoDatos("ReferenciaObjetoDatos2") != null && od2.ObtenerObjetoDatos("ReferenciaObjetoDatos2") != null) { Comparar(od1.ObtenerObjetoDatos("ReferenciaObjetoDatos2"), od2.ObtenerObjetoDatos("ReferenciaObjetoDatos2")); } // comparacion tipo 3 if (od1.Tipo.ObtenerPropiedad("ReferenciaObjetoDatosItem2") == null) { return; } Assert.AreEqual(od1.ObtenerObjetoDatos("ReferenciaObjetoDatosItem2") != null, od2.ObtenerObjetoDatos("ReferenciaObjetoDatosItem2") != null); if (od1.ObtenerObjetoDatos("ReferenciaObjetoDatosItem2") != null) { Assert.AreEqual(od1.ObtenerObjetoDatos("ReferenciaObjetoDatosItem2"), od1.ObtenerObjetoDatos("ReferenciaObjetoDatosItem[0]")); Assert.AreEqual(od2.ObtenerObjetoDatos("ReferenciaObjetoDatosItem2"), od2.ObtenerObjetoDatos("ReferenciaObjetoDatosItem[0]")); } }