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"))); } }
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); }
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(); } }
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)); }
public void TestImpostazioneThrowNullSetter() { ImpostazioneTrasferimento.ImpostazioneTrasferimento impostazione = new ImpostazioneTrasferimento.ImpostazioneTrasferimento("folderS", "folderD"); Assert.Throws <PathNotValidException>(() => impostazione.CartellaDestinazione = null); Assert.Throws <PathNotValidException>(() => impostazione.CartellaSorgente = null); }