Exemplo n.º 1
0
        public void TestReadWriteImpostazioni()
        {
            XMLDataPersistence   impPers = new XMLImpostazioniPersistence();
            IGestoreImpostazione impCon  = new ImpostazioneTrasferimentoController();

            ((IPersistActions)impCon).Persist += impPers.Salva;
            try
            {
                //Carico il file
                ISet <ImpostazioneTrasferimento.ImpostazioneTrasferimento> imps = (ISet <ImpostazioneTrasferimento.ImpostazioneTrasferimento>)impPers.Carica();
                impCon.SetImpostazioni(imps);
            }
            catch (PersistenceException e) { }
            finally
            {
                //Inserisco le impostazioni
                ImpostazioneTrasferimento.ImpostazioneTrasferimento toBeRemoved = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("toRemoveSrc", "toRemoveDst");
                impCon.AddImpostazione(new ImpostazioneTrasferimento.ImpostazioneTrasferimento("myPathSrc", "myPathDst"));
                impCon.AddImpostazione(new ImpostazioneTrasferimento.ImpostazioneTrasferimento("myPath1Src", "myPath1Dst"));
                impCon.AddImpostazione(toBeRemoved);
                ISet <ImpostazioneTrasferimento.ImpostazioneTrasferimento> imps = (ISet <ImpostazioneTrasferimento.ImpostazioneTrasferimento>)impPers.Carica();
                impCon.SetImpostazioni(imps);
                //Testo un po lascamente la lettura da file
                Assert.IsTrue(impCon.RemoveImpostazione(toBeRemoved));
                imps = (ISet <ImpostazioneTrasferimento.ImpostazioneTrasferimento>)impPers.Carica();
                //Testo la rimozione
                impCon.SetImpostazioni(imps);
                Assert.IsFalse(impCon.RemoveImpostazione(toBeRemoved));
                Assert.IsTrue(impCon.RemoveImpostazione(new ImpostazioneTrasferimento.ImpostazioneTrasferimento("myPathSrc", "myPathDst")));
            }
        }
Exemplo n.º 2
0
 public void TestImpostazioneSetter()
 {
     ImpostazioneTrasferimento.ImpostazioneTrasferimento impostazione = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("myDir", "yourDir");
     impostazione.CartellaDestinazione = "CambiamentoDestinazione";
     impostazione.CartellaSorgente     = new Cartella("CambiamentoSorgente");
     Assert.AreEqual(impostazione.CartellaDestinazione, new Cartella("CambiamentoDestinazione").Path);
     Assert.AreEqual(impostazione.CartellaSorgente.Path, new Cartella("CambiamentoSorgente").Path);
 }
Exemplo n.º 3
0
        public void TestLogInvocationRemImpostazione()
        {
            LogController        log  = new LogController(new HomeLog());
            IGestoreImpostazione cont = new ImpostazioneTrasferimentoController();

            //Aggancio l'evento
            cont.ToLog += log.Update;
            ImpostazioneTrasferimento.ImpostazioneTrasferimento imp = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("sorgente", "destinazione");
            cont.AddImpostazione(imp);
            //Se l'invocazione è andata a buon fine il contatore è aumentato
            //Controllo che la rimozione avvenga con successo
            Assert.IsTrue(cont.RemoveImpostazione(imp));
            //Controllo che nel log sia presente la rimozione quindi che l'evento abbia lavorato
            Assert.AreEqual(log.Entries.ElementAt(1).Operazione, "rimossa");
        }
        //Si suppone che object o sia una impostazione trasferimento

        public override void Salva(object o, PersistEvent param)
        {
            ImpostazioneTrasferimento.ImpostazioneTrasferimento toPut = (ImpostazioneTrasferimento.ImpostazioneTrasferimento)param.ToPersist;
            XmlDocument xdocument = new XmlDocument();

            try
            {
                xdocument.Load(Filename);
                //Dato che sono stato chiamato e il file esiste, si suppone che ci sia da fare un inserimento consono
                //Mi ri-permetto di andare liscio (a spade)
                XmlNode impostazioniMainNode = xdocument.DocumentElement;
                if (param.Action.Equals("aggiungi"))
                {
                    //Caso di aggiunta si veda sotto nel catch per commenti dettagliati
                    XmlElement xImpostazione = xdocument.CreateElement("impostazione");
                    xImpostazione.SetAttribute("utente", Utente.GetNomeUtente());
                    XmlElement cartellaSorgente = xdocument.CreateElement("cartella-sorgente");
                    cartellaSorgente.InnerText = toPut.CartellaSorgente.Path;
                    XmlElement cartellaDestinazione = xdocument.CreateElement("cartella-destinazione");
                    cartellaDestinazione.InnerText = toPut.CartellaDestinazione;
                    XmlElement verso = xdocument.CreateElement("verso");
                    verso.InnerText = toPut.Verso;
                    xImpostazione.AppendChild(cartellaSorgente);
                    xImpostazione.AppendChild(cartellaDestinazione);
                    xImpostazione.AppendChild(verso);
                    impostazioniMainNode.AppendChild(xImpostazione);
                }
                else if (param.Action.Equals("rimuovi"))
                {
                    //Caso di rimozione
                    //Itero, trovo l'impostazione che fa al caso mio e la rimuovo da impostazioni main node
                    //E tutti amici come prima
                    foreach (XmlNode impostazioneNode in impostazioniMainNode.ChildNodes)
                    {
                        if (impostazioneNode.Attributes.GetNamedItem("utente").Value.Equals(Utente.GetNomeUtente()))
                        {
                            //Controllo il contenuto
                            bool found = true;
                            foreach (XmlNode valueImpostazione in impostazioneNode.ChildNodes)
                            {
                                if (!valueImpostazione.Name.Equals("verso"))
                                {
                                    found = found && (
                                        ((valueImpostazione.Name.Equals("cartella-sorgente") &&
                                          valueImpostazione.InnerText.Equals(toPut.CartellaSorgente.Path))) ||
                                        (valueImpostazione.Name.Equals("cartella-destinazione") &&
                                         valueImpostazione.InnerText.Equals(toPut.CartellaDestinazione)));
                                }
                            }
                            if (found)
                            {
                                impostazioniMainNode.RemoveChild(impostazioneNode);
                            }
                        }
                    }
                }
                XmlWriterSettings settings = new XmlWriterSettings
                {
                    Indent = true
                };
                //Scrivo il file
                XmlWriter writer = XmlWriter.Create(Filename, settings);
                xdocument.Save(writer);
                //Ricordarsi la close sennò si hanno vari problemi
                writer.Close();
            }
            catch
            {
                //Il documento esiste, aggiungo andando liscio(a spade)
                xdocument = new XmlDocument();
                //Creo il tag contenitore
                XmlElement impostazioni = xdocument.CreateElement("impostazioni");
                //Creo il tag per la mia impostazione
                XmlElement impostazione = xdocument.CreateElement("impostazione");
                //Imposto l'attributo utente in modo consono
                impostazione.SetAttribute("utente", Utente.GetNomeUtente());

                //Creo gli i figli che compongono il tag impostazione e gli do il valore che devo inserire
                XmlElement cartellaSorgente = xdocument.CreateElement("cartella-sorgente");
                cartellaSorgente.InnerText = toPut.CartellaSorgente.Path;
                XmlElement cartellaDestinazione = xdocument.CreateElement("cartella-destinazione");
                cartellaDestinazione.InnerText = toPut.CartellaDestinazione;
                XmlElement verso = xdocument.CreateElement("verso");
                verso.InnerText = toPut.Verso;

                //Creo l'albero XML da aggiungere al DOM appena verra creato
                impostazione.AppendChild(cartellaSorgente);
                impostazione.AppendChild(cartellaDestinazione);
                impostazione.AppendChild(verso);
                impostazioni.AppendChild(impostazione);
                XmlDeclaration xmlDeclaration = xdocument.CreateXmlDeclaration("1.0", "UTF-8", null);
                //Creo la document root
                XmlElement root = xdocument.DocumentElement;
                xdocument.InsertBefore(xmlDeclaration, root);
                //Aggiungo impostazioni al dom
                xdocument.AppendChild(impostazioni);

                //Scrivo il file
                XmlWriterSettings settings = new XmlWriterSettings
                {
                    Indent = true
                };
                //Aggiungo il writer
                XmlWriter writer = XmlWriter.Create(Filename, settings);
                //TODO Aggiungere lo schema
                xdocument.Save(writer);
                writer.Close();
            }
        }
Exemplo n.º 5
0
 public void TestImpostazioneThrowLengthSetter()
 {
     ImpostazioneTrasferimento.ImpostazioneTrasferimento impostazione = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("folderS", "folderD");
     Assert.Throws <PathNotValidException>(() => impostazione.CartellaDestinazione = _veryLongElement);
     Assert.Throws <PathNotValidException>(() => impostazione.CartellaSorgente     = new Cartella(_veryLongElement));
 }
Exemplo n.º 6
0
 public void TestImpostazioneThrowNullSetter()
 {
     ImpostazioneTrasferimento.ImpostazioneTrasferimento impostazione = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("folderS", "folderD");
     Assert.Throws <PathNotValidException>(() => impostazione.CartellaDestinazione = null);
     Assert.Throws <PathNotValidException>(() => impostazione.CartellaSorgente     = null);
 }