public void CsvWriterWrites_NoID() { using (MemoryStream stream = new MemoryStream()) { List <Contact> store = new List <Contact>(); store.Add(Contact.Create("first", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("second", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("third", "ln", "street", "city", "st", "zip")); CsvContactWriter writer = new CsvContactWriter(); writer.Write(stream, store); stream.Flush(); stream.Seek(0, SeekOrigin.Begin); StreamReader sr = new StreamReader(stream); string header = sr.ReadLine(); string first = sr.ReadLine(); string second = sr.ReadLine(); string third = sr.ReadLine(); Assert.AreEqual("ID,FirstName,LastName,StreetAddress,City,State,PostalCode", header, "Header row is not equal to expected"); Assert.AreEqual(",first,ln,street,city,st,zip", first); Assert.AreEqual(",second,ln,street,city,st,zip", second); Assert.AreEqual(",third,ln,street,city,st,zip", third); Assert.AreEqual(-1, sr.Peek()); } }
public void CsvReader_AddWorksAfterRead() { using (MemoryStream ms = new MemoryStream()) { ContactStore store = new ContactStore(); store.Add(Contact.Create("first", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("second", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("third", "ln", "street", "city", "st", "zip")); CsvContactWriter writer = new CsvContactWriter(); writer.Write(ms, store.Contacts); ms.Seek(0, SeekOrigin.Begin); CsvContactReader reader = new CsvContactReader(); List <Contact> contacts = new List <Contact>(reader.Read(ms)); Assert.AreEqual(3, contacts.Count, "There should be 3 contacts"); Assert.AreEqual("first", contacts[0].FirstName); Assert.AreEqual("second", contacts[1].FirstName); Assert.AreEqual("third", contacts[2].FirstName); store.Add(Contact.Create("fourth", "ln", "street", "city", "st", "zip")); Assert.AreEqual(4, store.Contacts.Count(), "There should be four contacts"); ContactFieldFilter filter = new ContactFieldFilter(); filter.SetFirstName("fourth"); var found = store.Search(filter); Assert.AreEqual(1, found.Count(), "There should have been one item found"); Assert.AreEqual("fourth", found.First().FirstName, "The contact name was wrong"); } }
public override CommandResult Execute() { if (!Args.ContainsKey("file")) { Log.Error(@"Save command requires a 'file' argument with the path to a new or existing CSV file."); return(null); } string file = Args["file"]; using (Stream strm = File.OpenWrite(file)) { CsvContactWriter writer = new CsvContactWriter(); writer.Write(strm, Store.Contacts); } return(new NonUndoCommandResult(this, new List <Contact>(0))); }
public void CsvReader_ReadsHappyPath_RoundTrip() { using (MemoryStream ms = new MemoryStream()) { ContactStore store = new ContactStore(); store.Add(Contact.Create("first", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("second", "ln", "street", "city", "st", "zip")); store.Add(Contact.Create("third", "ln", "street", "city", "st", "zip")); CsvContactWriter writer = new CsvContactWriter(); writer.Write(ms, store.Contacts); ms.Seek(0, SeekOrigin.Begin); CsvContactReader reader = new CsvContactReader(); List <Contact> contacts = new List <Contact>(reader.Read(ms)); Assert.AreEqual(3, contacts.Count, "There should be 3 contacts"); Assert.AreEqual("first", contacts[0].FirstName); Assert.AreEqual("second", contacts[1].FirstName); Assert.AreEqual("third", contacts[2].FirstName); } }