示例#1
0
 public void TestAddphoneWithExistingEntry()
 {
     var testPhoneDatabase = new PhonebookRepository();
     testPhoneDatabase.AddPhone("TestUser", new string[] { "+359899777235" });
     bool isNewEntry = testPhoneDatabase.AddPhone("testuser", new string[] { "+359888777235" });
     Assert.IsFalse(isNewEntry);
 }
        public void ListEntriesShouldHaveCorrectCountPhoneNumbers()
        {
            PhonebookRepository repo = new PhonebookRepository();
            bool result = repo.AddPhone("Jhon", new List<string>() { "+359123456789", "+35976543212" });

            Assert.AreEqual(1, repo.ListEntries(0, 1).ToList().Count);
        }
示例#3
0
 public void TestAddingMoreNumbers()
 {
     var testPhoneDatabase = new PhonebookRepository();
     testPhoneDatabase.AddPhone("TestUser", new string[] { "+359899777235" });
     bool isNewEntry = testPhoneDatabase.AddPhone("testuser", new string[] { "+359888777777", "359888777666", "359888777555" });
     Assert.IsFalse(isNewEntry);
 }
        public void AddMultiplePhoneTest()
        {
            PhonebookRepository target = new PhonebookRepository();

            var name = "Kalina";
            var numbers = new List<string>();
            numbers.Add("+359899777235");
            target.AddPhone(name, numbers);

            name = "Kalina";
            numbers = new List<string>();
            numbers.Add("+359899777235");
            target.AddPhone(name, numbers);

            name = "Pesho";
            numbers = new List<string>();
            numbers.Add("++35945346433");
            target.AddPhone(name, numbers);

            name = "Peshev";
            numbers = new List<string>();
            numbers.Add("++3594545454545");
            target.AddPhone(name, numbers);

            Assert.AreEqual(3, target.Count);
        }
示例#5
0
        private static void ChangePhoneCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
        {
            var changeResult = phonebookRepository.ChangePhone(Convertnumber(command.Parameters[0]),
                                                               Convertnumber(command.Parameters[1]));

            output.AppendLine("" + changeResult + " numbers changed");
        }
        public void AddPhoneShouldMargePhoneNumbers()
        {
            PhonebookRepository repo = new PhonebookRepository();
            bool result = repo.AddPhone("Jhon", new List<string>() { "+359123456789", "+35976543212" });
            result = repo.AddPhone("Jhon", new List<string>() { "+359123456789", "+35976543212" });

            Assert.AreEqual(2, repo.ListEntries(0, 1).ToList()[0].Phones.Count);
        }
        public void ChangePhoneShouldChangeCorrectPhoneNumbers()
        {
            PhonebookRepository repo = new PhonebookRepository();
            bool result = repo.AddPhone("Jhon", new List<string>() { "+359123456789", "+35976543212" });
            repo.ChangePhone("+359123456789", "+359111111119");

            Assert.AreEqual("+359111111119|+35976543212", string.Join("|", repo.ListEntries(0, 1).ToList()[0].Phones));
        }
示例#8
0
 public void TestChangePhoneWithOneNumber()
 {
     var testPhoneDatabase = new PhonebookRepository();
     testPhoneDatabase.AddPhone("TestUser", new string[] { "+359899777235" });
     testPhoneDatabase.AddPhone("TestUserTwo", new string[] { "+359888777777" });
     int countOfChangedNumbers = testPhoneDatabase.ChangePhone("+359899777235", "+359899777333");
     Assert.AreEqual(1, countOfChangedNumbers);
 }
示例#9
0
        public static void Main()
        {
            var factory = new PhonebookFactory();
            var data    = new PhonebookRepository(factory);
            var engine  = new Engine(data);

            engine.Run();
        }
        public void ShouldAddEmptyPhonesEntryWhenCalled()
        {
            PhonebookRepository repo = new PhonebookRepository();

            string userName = "******";
            List<String> numbers = new List<string>();
            repo.AddPhone(userName, numbers);
            Assert.AreNotEqual(null, repo);
        }
示例#11
0
 public void TestChangePhoneWithSeveralNumbers()
 {
     var testPhoneDatabase = new PhonebookRepository();
     testPhoneDatabase.AddPhone("UserOne", new string[] { "+359899777235", "+359888777777" });
     testPhoneDatabase.AddPhone("UserTwo", new string[] { "+359888777777" });
     testPhoneDatabase.AddPhone("UserThree", new string[] { "+359888777777", "+359899777235" });
     int countOfChangedNumbers = testPhoneDatabase.ChangePhone("+359888777777", "+359888888888");
     Assert.AreEqual(3, countOfChangedNumbers);
 }
        public void ListPhonebookNumbersAllPossiblePhoneNumbersSyntax()
        {
            var phonebook = new PhonebookRepository();
            phonebook.AddPhone("Katia",
                new[]
                {
                    "(02) 111 11 22", "123", "(+1) 123 456 789", "0883 / 456-789", "0888 88 99 00", "888-88-99-00",
                    "+359 (888) 41-80-12", "00359 (888) 41-80-12", "+359527734522"
                });

        }
 public void AddPhoneTest_Single()
 {
     IPhonebookRepository phonebook = new PhonebookRepository();
     string  name = "Kalina";
     string[] phones = {"+359899777235", "+35929811111"};
     bool isNewEntry = phonebook.AddPhone(name, phones);
     Assert.IsTrue(isNewEntry);
     Assert.IsTrue(phonebook.ListEntries(0, 2) == null); // there is only one entry
     string actual = phonebook.ListEntries(0, 1)[0].ToString();
     Assert.AreEqual("[Kalina: +35929811111, +359899777235]", actual);
 }
        public void AddSinglePhoneTest()
        {
            PhonebookRepository target = new PhonebookRepository();

            var name = "Kalina";
            var numbers = new List<string>();
            numbers.Add("+359899777235");

            target.AddPhone(name, numbers);
            Assert.AreEqual(1, target.Count);
        }
        public void ShouldAddPhoneWhenCalled()
        {
            PhonebookRepository repo = new PhonebookRepository();

            string userName = "******";
            List<String> numbers = new List<string>();
            numbers.Add("0898 123 456");
            numbers.Add("((02) 9811111");
            repo.AddPhone(userName, numbers);
            Assert.AreNotEqual(null, repo);
        }
        public void ShouldAddEmptyUsernameWithPhonesWhenCalled()
        {
            PhonebookRepository repo = new PhonebookRepository();

            string userName = "";
            List<String> numbers = new List<string>();
            numbers.Add("088 322 33 44");
            numbers.Add("((+359) 899 777236");
            numbers.Add("+359899777235");
            repo.AddPhone(userName, numbers);
            Assert.AreNotEqual(null, repo);
        }
        public void AddPhoneTest_TwoDuplicatedEntries()
        {
            IPhonebookRepository phonebook = new PhonebookRepository();
            string name = "Kalina";
            string[] phones = { "+359899777235", "+35929811111" };
            phonebook.AddPhone(name, phones);

            string name2 = "Kalina New";
            string[] phones2 = { "+359899777235", "+35929811111" };
            phonebook.AddPhone(name2, phones2);
            (phonebook as PhonebookRepository).Entries[0].Name = name2; // duplication
            phonebook.AddPhone(name2, phones2);
        }
 public static void Main()
 {
     IPhonebookRepository phonebookRepository = new PhonebookRepository();
     IConvertable convertPhoneNumber = new Converter();
     IPrintable printer = new Printer();
     AbstractCommandsFactory factory = new RegularCommandsFactory(convertPhoneNumber, phonebookRepository, printer);
     ICommand add = factory.MakeCommandAdd();
     ICommand change = factory.MakeCommandChange();
     ICommand list = factory.MakeCommandList();
     ICommand remove = factory.MakeCommandRemove();
     Processor processor = new Processor();
     processor.ProcessCommands(add, change, list, remove);
 }
示例#19
0
        public static void Main()
        {
            IPhonebookRepository    phonebookRepository = new PhonebookRepository();
            IConvertable            convertPhoneNumber  = new Converter();
            IPrintable              printer             = new Printer();
            AbstractCommandsFactory factory             = new RegularCommandsFactory(convertPhoneNumber, phonebookRepository, printer);
            ICommand  add       = factory.MakeCommandAdd();
            ICommand  change    = factory.MakeCommandChange();
            ICommand  list      = factory.MakeCommandList();
            ICommand  remove    = factory.MakeCommandRemove();
            Processor processor = new Processor();

            processor.ProcessCommands(add, change, list, remove);
        }
        public static void Main()
        {
            var output = new StringBuilder();
            var phonebookRepository = new PhonebookRepository();
            var commandExecutor = new CommandExecutor();

            var commands = ParseCommands();
            foreach (var command in commands)
            {
                commandExecutor.ExecuteCommand(phonebookRepository, command, output);
            }

            Console.Write(output);
        }
示例#21
0
        public static void Main()
        {
            var output = new StringBuilder();
            var phonebookRepository = new PhonebookRepository();
            var commandExecutor     = new CommandExecutor();

            var commands = ParseCommands();

            foreach (var command in commands)
            {
                commandExecutor.ExecuteCommand(phonebookRepository, command, output);
            }

            Console.Write(output);
        }
        public void TestListMultipleEntriesWithMergeAndSorting()
        {
            PhonebookRepository phonebook = new PhonebookRepository();

            this.repository.AddPhone("Svetlin Nakov", new string[] { "+359887333555", "+35962445566" });
            this.repository.AddPhone("SVETLIN NAKOV", new string[] { "+3592555444", "+359887333555" });
            this.repository.AddPhone("Niki Kostov", new string[] { "+35989911222", "+35929887744" });
            this.repository.AddPhone("niki kostov", new string[] { "+35929887744", "+35989911222" });
            string expectedResult =
                "[Niki Kostov: +35929887744, +35989911222]; [Svetlin Nakov: +3592555444, +35962445566, +359887333555]";
            IEnumerable <PhonebookEntry> listedEntries = this.repository.ListEntries(0, 2);
            string actualResult = string.Join("; ", listedEntries);

            Assert.AreEqual(expectedResult, actualResult);
        }
        public void AddPhoneTest_TwoEntries()
        {
            IPhonebookRepository phonebook = new PhonebookRepository();
            string name = "Kalina";
            string[] phones = { "+359899777235", "+35929811111" };
            phonebook.AddPhone(name, phones);

            string name2 = "Kalina New";
            string[] phones2 = { "+359899777235", "+35929811111" };
            bool isNewEntry = phonebook.AddPhone(name2, phones2);
            Assert.IsTrue(isNewEntry);
            Assert.IsTrue(phonebook.ListEntries(0, 2).Length == 2); // there is 2 entries
            Assert.IsTrue(phonebook.ListEntries(0, 3) == null); // but not 3
            string actual = phonebook.ListEntries(0, 2)[1].ToString();
            Assert.AreEqual("[Kalina New: +35929811111, +359899777235]", actual);
        }
示例#24
0
 private static void ListCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
 {
     try
     {
         var entries = phonebookRepository.ListEntries(int.Parse(command.Parameters[0]),
                                                       int.Parse(command.Parameters[1]));
         foreach (var entry in entries)
         {
             output.AppendLine(entry.ToString());
         }
     }
     catch (ArgumentOutOfRangeException)
     {
         output.AppendLine("Invalid range");
     }
 }
        public void ShouldListUserPhonesWhenCalled()
        {
            PhonebookRepository repo = new PhonebookRepository();

            string userName = "******";
            string phone = "088 322 33 44";
            string phoneNew = "((+359) 899 777236";
            List<String> numbers = new List<string>();

            numbers.Add(phone);
            numbers.Add(phoneNew);
            repo.AddPhone(userName, numbers);

            var list = repo.ListEntries(0, 1);
            Assert.AreEqual(userName, list[0].FirstName);
            Assert.AreEqual(2, list[0].PhoneNumbers.Count);
        }
        public void ShouldChangeUserPhonesWhenCalled()
        {
            PhonebookRepository repo = new PhonebookRepository();

            string userName = "******";
            string phone = "088 322 33 44";
            List<String> numbers = new List<string>();
            numbers.Add(phone);
            string phoneNew = "((+359) 899 777236";
            repo.AddPhone(userName, numbers);
            repo.ChangePhone(phone, phoneNew);
            var testObj = GetInstanceField(typeof(PhonebookRepository), repo, "_sortedEntries");
            string result = testObj.ToString();

            Assert.IsFalse(result.Contains(phone));
            Assert.IsTrue(result.Contains(phoneNew));
        }
示例#27
0
 public void ExecuteCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
 {
     switch (command.Type)
     {
         case CommandTypes.AddPhone:
             AddPhoneCommand(phonebookRepository, command, output);
             break;
         case CommandTypes.ChangePhone:
             ChangePhoneCommand(phonebookRepository, command, output);
             break;
         case CommandTypes.List:
             ListCommand(phonebookRepository, command, output);
             break;
         default:
             throw new ArgumentException("Unknown command: " + command.Type.ToString());
     }
 }
 public void ChangePhoneTest_ChangeMany()
 {
     IPhonebookRepository phonebook = new PhonebookRepository();
     string[] phones = { "+359899777235", "+35929811111" };
     phonebook.AddPhone("Kalina", phones);
     phonebook.AddPhone("Pesho", phones);
     phonebook.AddPhone("Gosho", phones);
     phonebook.AddPhone("Tosho", new string[] { "+359899777236", "+35929811112" }); // different
     int actuallyChanged = phonebook.ChangePhone("+35929811111", "+35929811112");
     Assert.AreEqual(3, actuallyChanged);
     string actual1 = phonebook.ListEntries(0, 4)[0].ToString();
     string actual2 = phonebook.ListEntries(0, 4)[1].ToString();
     string actual3 = phonebook.ListEntries(0, 4)[2].ToString();
     Assert.AreEqual("[Gosho: +35929811112, +359899777235]", actual1); // record is changed
     Assert.AreEqual("[Kalina: +35929811112, +359899777235]", actual2); // record is changed
     Assert.AreEqual("[Pesho: +35929811112, +359899777235]", actual3); // record is changed
 }
        public void ChangeDoubleMultiplePhoneTest()
        {
            PhonebookRepository target = new PhonebookRepository();

            var name = "Kalina";
            var numbers = new List<string>();
            numbers.Add("+35989943242235");
            target.AddPhone(name, numbers);

            name = "Pesho";
            numbers = new List<string>();
            numbers.Add("+35989943242235");
            target.AddPhone(name, numbers);

            var actual = target.ChangePhone("+35989943242235", "+0000000000000");
            actual = target.ChangePhone("+35989943242235", "+0000000000000");
            Assert.AreEqual(0, actual);
        }
示例#30
0
        private static void Main()
        {
            ISanitizer sanitizer = new Sanitizer();
            IPhonebookRepository phonebookDatabase = new PhonebookRepository();
            IPrinter printer = new StringBuilderPrinter();
            ILineParser lineParser = new LineParser(sanitizer, phonebookDatabase, printer);
            while (true)
            {
                string inputLine = Console.ReadLine();
                if (inputLine == "End" || inputLine == null)
                {
                    break;
                }

                lineParser.ParseLine(inputLine);
            }

            Console.Write(printer.GetOutput());
        }
示例#31
0
        public static void Main()
        {
            IPrinter printer = new ConsolePrinter();
            IPhonebookRepository phonebook = new PhonebookRepository();
            IPhoneNumberConvertor phoneConvertor = new PhoneNumberConvertor();
            CommandManager commandManager = new CommandManager(phonebook, printer, phoneConvertor);

            while (true)
            {
                string inputData = Console.ReadLine();
                if (inputData == "End")
                {
                    break;
                }

                Command command = Command.Parse(inputData);

                commandManager.ProceedCommand(command);
            }
        }
示例#32
0
        public void ExecuteCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
        {
            switch (command.Type)
            {
            case CommandTypes.AddPhone:
                AddPhoneCommand(phonebookRepository, command, output);
                break;

            case CommandTypes.ChangePhone:
                ChangePhoneCommand(phonebookRepository, command, output);
                break;

            case CommandTypes.List:
                ListCommand(phonebookRepository, command, output);
                break;

            default:
                throw new ArgumentException("Unknown command: " + command.Type.ToString());
            }
        }
示例#33
0
        private static void AddPhoneCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
        {
            var name = command.Parameters[0];
            var numbers = command.Parameters.Skip(1).ToList();

            for (int i = 0; i < numbers.Count; i++)
            {
                numbers[i] = Convertnumber(numbers[i]);
            }

            var isExist = phonebookRepository.AddPhone(name, numbers);
            switch (isExist)
            {
                case true:
                    output.AppendLine("Phone entry merged");
                    break;
                default:
                    output.AppendLine("Phone entry created");
                    break;
            }
        }
示例#34
0
        public void TestWithOneEntry()
        {
            var testName = "TestUser";
            var testNumbers = new SortedSet<string> { "+359899777235", "+359888777777" };
            ListEntry[] expected = new ListEntry[] { new ListEntry { Name = testName, Numbers = testNumbers } };

            var testPhoneDatabase = new PhonebookRepository();
            testPhoneDatabase.AddPhone("TestUser", new string[] { "+359899777235" });
            testPhoneDatabase.AddPhone("testuser", new string[] { "+359888777777" });

            var actual = testPhoneDatabase.ListEntries(0, 1);

            Assert.AreEqual(expected.Count(), actual.Count());

            IEnumerator e1 = expected.GetEnumerator();
            IEnumerator e2 = actual.GetEnumerator();

            while (e1.MoveNext() && e2.MoveNext())
            {
                Assert.AreEqual(e1.Current.ToString(), e2.Current.ToString());
            }
        }
示例#35
0
        private static void AddPhoneCommand(PhonebookRepository phonebookRepository, Command command, StringBuilder output)
        {
            var name    = command.Parameters[0];
            var numbers = command.Parameters.Skip(1).ToList();

            for (int i = 0; i < numbers.Count; i++)
            {
                numbers[i] = Convertnumber(numbers[i]);
            }

            var isExist = phonebookRepository.AddPhone(name, numbers);

            switch (isExist)
            {
            case true:
                output.AppendLine("Phone entry merged");
                break;

            default:
                output.AppendLine("Phone entry created");
                break;
            }
        }
 public void MethodInitialize()
 {
     this.repository = new PhonebookRepository();
 }
        public void ListEntriesTest_TwoEntries()
        {
            IPhonebookRepository phonebook = new PhonebookRepository();
            string name = "Kalina";
            string[] phones = { "+359899777235", "+35929811111" };
            phonebook.AddPhone(name, phones);

            string name2 = "Kalina New";
            string[] phones2 = { "+359899777235", "+35929811111" };
            phonebook.AddPhone(name2, phones2);
            Assert.IsTrue(phonebook.ListEntries(0, 2).Length == 2); // there is 2 entries
            Assert.IsTrue(phonebook.ListEntries(0, 3) == null); // but not 3
        }
 public void ListEntriesTest_None()
 {
     IPhonebookRepository phonebook = new PhonebookRepository();
     Assert.IsTrue(phonebook.ListEntries(0, 1) == null); // there is no entries initially
 }
 public void ChangePhoneTest_ChangeSingle()
 {
     IPhonebookRepository phonebook = new PhonebookRepository();
     string name = "Kalina";
     string[] phones = { "+359899777235", "+35929811111" };
     phonebook.AddPhone(name, phones);
     int actuallyChanged = phonebook.ChangePhone("+35929811111", "+35929811112");
     Assert.AreEqual(1, actuallyChanged);
     string actual = phonebook.ListEntries(0, 1)[0].ToString();
     Assert.AreEqual("[Kalina: +35929811112, +359899777235]", actual); // record is changed
 }