Ejemplo n.º 1
0
 public List <Employee> CheckFile(ISerDeser isd, ReaderConfig read)
 {
     if (read.ReadLine().ToLower() == "xml")
     {
         isd = new XmlReadWrite();
         if (File.Exists("employee.xml"))
         {
             list = (List <Employee>)isd.Deserial();
         }
         else
         {
             list = new List <Employee>();
         }
     }
     if (read.ReadLine().ToLower() == "bin")
     {
         isd = new BinReadWrite();
         if (File.Exists("employee.dat"))
         {
             list = (List <Employee>)isd.Deserial();
         }
         else
         {
             list = new List <Employee>();
         }
     }
     if (read.ReadLine().ToLower() != "xml" && read.ReadLine().ToLower() != "bin")
     {
         Console.WriteLine("Проверьте правильность записи конфигурации формата в файле option.ini. Обратите внимание, что доступны только bin и xml форматы");
     }
     return(list);
 }
Ejemplo n.º 2
0
        private static void SingleTest(ISerDeser serializer, ITestDataDescription original, List<Error> errors,
            bool streaming, Log log, LogStorage logStorage, out bool isRepeatedError)
        {
            isRepeatedError = false;
            //var measurement = new Measurement();
            string serializedString = null;
            Stream serializedStream = new MemoryStream();
            object processed;
            log.SerializerName = serializer.Name;

            var sw = Stopwatch.StartNew();
            var serSuccessful = false;
            var error = new Error
            {
                StringOrStream = log.StringOrStream,
                TestDataName = log.TestDataName,
                SerializerName = log.SerializerName,
                Run = log.Run,
                Repetition = log.RepetitionIndex
            };
            try
            {
                if (streaming)
                {
                    serializer.Serialize(original.Data, serializedStream);
                    log.Size = (int) serializedStream.Length;
                }
                else
                {
                    serializedString = serializer.Serialize(original.Data);
                    log.Size = serializedString.Length;
                }
                serSuccessful = true;
                log.TimeSer = sw.ElapsedTicks;

                processed = streaming
                    ? serializer.Deserialize(serializedStream)
                    : serializer.Deserialize(serializedString);
                log.TimeDeser = sw.ElapsedTicks - log.TimeSer;
            }
            catch (Exception ex)
            {
                error.ErrorText = (serSuccessful ? "Deserialization" : "Serialization") + " Exception: " + ex.Message;
                isRepeatedError = !error.TryAddTo(errors);
                return;
            }
            sw.Stop();

            string errorText;
            // write log if comparison is true
            if (Comparer.Compare(original.Data, processed, out errorText, log, false))
                logStorage.Write(log);
            else // write error, if comparison false
            {
                error.ErrorText = errorText;
                isRepeatedError = !error.TryAddTo(errors); // if it false adding, that means an error repeated.
            }
        }
Ejemplo n.º 3
0
        private static void SingleTest(ISerDeser serializer, ITestDataDescription original, List <Error> errors,
                                       bool streaming, Log log, LogStorage logStorage, out bool isRepeatedError)
        {
            isRepeatedError = false;
            //var measurement = new Measurement();
            string serializedString = null;
            Stream serializedStream = new MemoryStream();
            object processed;

            log.SerializerName = serializer.Name;

            var sw            = Stopwatch.StartNew();
            var serSuccessful = false;
            var error         = new Error
            {
                StringOrStream = log.StringOrStream,
                TestDataName   = log.TestDataName,
                SerializerName = log.SerializerName,
                Run            = log.Run,
                Repetition     = log.RepetitionIndex
            };

            try
            {
                if (streaming)
                {
                    serializer.Serialize(original.Data, serializedStream);
                    log.Size = (int)serializedStream.Length;
                }
                else
                {
                    serializedString = serializer.Serialize(original.Data);
                    log.Size         = serializedString.Length;
                }
                serSuccessful = true;
                log.TimeSer   = sw.ElapsedTicks;

                processed = streaming
                    ? serializer.Deserialize(serializedStream)
                    : serializer.Deserialize(serializedString);
                log.TimeDeser = sw.ElapsedTicks - log.TimeSer;
            }
            catch (Exception ex)
            {
                error.ErrorText = (serSuccessful ? "Deserialization" : "Serialization") + " Exception: " + ex.Message;
                isRepeatedError = !error.TryAddTo(errors);
                return;
            }
            sw.Stop();

            string errorText;

            // write log if comparison is true
            if (Comparer.Compare(original.Data, processed, out errorText, log, false))
            {
                logStorage.Write(log);
            }
            else // write error, if comparison false
            {
                error.ErrorText = errorText;
                isRepeatedError = !error.TryAddTo(errors); // if it false adding, that means an error repeated.
            }
        }
Ejemplo n.º 4
0
        public void Show(AddDelFindInf metod, ReaderConfig read, FileChecker check)
        {
            Console.WriteLine("Считывание конфигурации из файла option.ini, нажмите Enter.");
            read.ReadLine();
            Console.ReadLine();
            Console.WriteLine("Считывание базы сотрудников, нажмите Enter.");
            metod.Employees = check.CheckFile(Isd, read);
            Console.ReadLine();

            while (true)
            {
                Console.Clear();
                Console.WriteLine("Нажмите Enter для просмотра всех доступных команд либо введите команду:");
                string command = Console.ReadLine();
                switch (command.ToLower())
                {
                case "add":
                    string surname;
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите фамилию: ");
                        surname = Console.ReadLine();
                        if (surname.Length > 25)
                        {
                            Console.WriteLine("Некорректный ввод фамилии, максимальная длина фамилии 25 символов.");
                            Console.ReadLine();
                        }
                        else
                        {
                            break;
                        }
                    }
                    string firstname;
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите имя сотрудника : ");
                        firstname = Console.ReadLine();
                        if (firstname.Length > 15)
                        {
                            Console.WriteLine("Некорректный ввод имени, максимальная длина имени 15 символов.");
                            Console.ReadLine();
                        }
                        else
                        {
                            break;
                        }
                    }
                    string position;
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите должность сотрудника: ");
                        position = Console.ReadLine();
                        if (position.Length > 20)
                        {
                            Console.WriteLine("Некорректный ввод наименования должности, максимальная длина наименования должности 20 символов.");
                            Console.ReadLine();
                        }
                        else
                        {
                            break;
                        }
                    }
                    metod.AddEmp(surname, firstname, position);
                    Console.WriteLine("Сотрудник " + surname + " " + firstname + " " + position + " успешно добавлен в базу данных.");
                    Console.ReadLine();
                    break;

                case "del":
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите фамилию удаляемого сотрудника: ");
                        surname = Console.ReadLine();
                        if (metod.Employees.Exists(a => a.Surname == surname))
                        {
                            metod.Del(surname);
                            Console.WriteLine("Сотрудник с фамилией " + surname + " удален");
                        }
                        else
                        {
                            Console.WriteLine("Такой фамилии нет в списке");
                        }
                        Console.ReadLine();
                        break;
                    }
                    break;

                case "inf":
                    Console.WriteLine(metod.GetInfo(metod.Employees));
                    Console.ReadLine();
                    break;

                case "findsur":
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите фамилию сотрудника: ");
                        surname = Console.ReadLine();
                        if (metod.Employees.Exists(a => a.Surname == surname))
                        {
                            Console.WriteLine(metod.FindEmployeeSurname(surname).ToString());
                        }
                        else
                        {
                            Console.WriteLine("Фамилии " + surname + " нет в списке.");
                        }
                        Console.ReadLine();
                        break;
                    }
                    break;

                case "findnam":
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите имя сотрудника: ");
                        firstname = Console.ReadLine();
                        if (metod.Employees.Exists(a => a.Firstname == firstname))
                        {
                            Console.WriteLine(metod.FindEmployeeFirstname(firstname).ToString());
                        }
                        else
                        {
                            Console.WriteLine("Имени " + firstname + " нет в списке.");
                        }
                        Console.ReadLine();
                        break;
                    }
                    break;

                case "findpos":
                    while (true)
                    {
                        Console.Clear();
                        Console.WriteLine("Введите должность сотрудника: ");
                        position = Console.ReadLine();
                        if (metod.Employees.Exists(a => a.Position == position))
                        {
                            Console.WriteLine(metod.FindEmployeePost(position).ToString());
                        }
                        else
                        {
                            Console.WriteLine("Сотрудников с должностью " + position + " нет в списке.");
                        }
                        Console.ReadLine();
                        break;
                    }
                    break;

                case "exit":
                    if (read.ReadLine().ToLower() == "xml")
                    {
                        Isd = new XmlReadWrite();
                    }
                    if (read.ReadLine().ToLower() == "bin")
                    {
                        Isd = new BinReadWrite();
                    }
                    Isd.Serial(metod.Employees);
                    return;
                }
                if (command.ToLower() != "add" && command.ToLower() != "del" && command.ToLower() != "inf" && command.ToLower() != "findsur" && command.ToLower() != "findnam" && command.ToLower() != "findpos" && command.ToLower() != "exit")
                {
                    Help();
                }
            }
        }