示例#1
0
        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 void RemoveWithFilter()
        {
            ContactStore store      = new ContactStore();
            Contact      c1_with_id = store.Add(Contact.Create("fn1", "ln1", "street1", "city1", "st1", "zip1"));
            Contact      c2_with_id = store.Add(Contact.Create("fn2", "ln2", "street2", "city2", "st2", "zip2"));
            Contact      c3_with_id = store.Add(Contact.Create("fn3", "ln3", "street3", "city3", "st3", "zip3"));
            Contact      c4_with_id = store.Add(Contact.Create("fn4", "ln4", "street4", "city4", "st4", "zip4"));
            Contact      c5_with_id = store.Add(Contact.Create("fn5", "ln5", "street5", "city5", "st5", "zip5"));
            Contact      c6_with_id = store.Add(Contact.Create("fn6", "ln6", "street6", "city6", "st6", "zip6"));
            Contact      c7_with_id = store.Add(Contact.Create("fn7", "ln7", "street7", "city7", "st7", "zip7"));

            Assert.AreEqual(7, store.Contacts.Count());

            Contact removed;

            ContactFieldFilter filterFN = new ContactFieldFilter();

            filterFN.SetFirstName("fn1");
            Assert.IsTrue(store.Remove(filterFN, out removed));
            Assert.AreEqual(1, removed.ID.Value);

            ContactFieldFilter filterLN = new ContactFieldFilter();

            filterLN.SetLastName("ln2");
            Assert.IsTrue(store.Remove(filterLN, out removed));
            Assert.AreEqual(2, removed.ID.Value);

            ContactFieldFilter filterStreet = new ContactFieldFilter();

            filterStreet.SetStreetAddress("street3");
            Assert.IsTrue(store.Remove(filterStreet, out removed));
            Assert.AreEqual(3, removed.ID.Value);

            ContactFieldFilter filterCity = new ContactFieldFilter();

            filterCity.SetCity("city4");
            Assert.IsTrue(store.Remove(filterCity, out removed));
            Assert.AreEqual(4, removed.ID.Value);

            ContactFieldFilter filterState = new ContactFieldFilter();

            filterState.SetState("st5");
            Assert.IsTrue(store.Remove(filterState, out removed));
            Assert.AreEqual(5, removed.ID.Value);

            ContactFieldFilter filterZip = new ContactFieldFilter();

            filterZip.SetPostalCode("zip6");
            Assert.IsTrue(store.Remove(filterZip, out removed));
            Assert.AreEqual(6, removed.ID.Value);

            ContactFieldFilter filterId = new ContactFieldFilter();

            filterId.SetID(7);
            Assert.IsTrue(store.Remove(filterId, out removed));
            Assert.AreEqual(7, removed.ID.Value);

            Assert.AreEqual(0, store.Contacts.Count());
        }
        public static ContactFieldFilter FilterFromArgs(IReadOnlyDictionary <string, string> args)
        {
            ContactFieldFilter filter = new ContactFieldFilter();

            foreach (KeyValuePair <string, string> pair in args)
            {
                switch (pair.Key.ToLower())
                {
                case "id":
                    int id;
                    if (int.TryParse(pair.Value, out id))
                    {
                        filter.SetID(id);
                    }
                    else
                    {
                        Log.Error("Unable to parse ID - must be an integer");
                    }
                    break;

                case "f":
                case "fn":
                case "first":
                case "firstname":
                    filter.SetFirstName(pair.Value); break;

                case "l":
                case "ln":
                case "last":
                case "lastname":
                    filter.SetLastName(pair.Value); break;

                case "str":
                case "street":
                    filter.SetStreetAddress(pair.Value); break;

                case "c":
                case "cty":
                case "city":
                    filter.SetCity(pair.Value); break;

                case "stt":
                case "state":
                    filter.SetState(pair.Value); break;

                case "pc":
                case "postal":
                case "postalcode":
                case "zip":
                    filter.SetPostalCode(pair.Value); break;

                default:
                    break;
                }
            }

            return(filter);
        }
        public void Search_FirstName()
        {
            ContactStore store = new ContactStore();

            store.Add(Contact.Create("a", "x", "x", "x", "x", "x"));
            store.Add(Contact.Create("b", "x", "x", "x", "x", "x"));
            store.Add(Contact.Create("c", "x", "x", "x", "x", "x"));
            store.Add(Contact.Create("a", "x", "x", "x", "x", "x"));
            store.Add(Contact.Create("b", "x", "x", "x", "x", "x"));
            store.Add(Contact.Create("c", "x", "x", "x", "x", "x"));

            ContactFieldFilter filter = new ContactFieldFilter();

            filter.SetFirstName("b");

            CollectionAssert.AreEqual(
                new List <int> {
                2, 5
            },
                store.Search(filter).Select(c => c.ID).ToList());
        }