Ejemplo n.º 1
0
        /// <summary>
        ///     Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        static void Main([NotNull][ItemNotNull] string [] args)
        {
            var programName = Process.GetCurrentProcess( ).ProcessName;

            if (args.Length == 1)
            {
                var fileName = args [0];
                var fileInfo = new FileInfo(fileName);

                if (!fileInfo.Exists)
                {
                    Console.WriteLine($"File '{fileInfo.FullName} does not exist");
                }

                var preferencesModel = new PreferencesModel( );
                PreferencesHelpers.Load(preferencesModel, fileInfo);

                var byGender = preferencesModel.ByGenderLastName( );
                WriteRecords("By gender, then last name ascending", byGender);

                var byBirthDate = preferencesModel.ByBirthDate( );
                WriteRecords("By birth date", byBirthDate);

                var byLastNameDescending = preferencesModel.ByLastNameDescending( );
                WriteRecords("By last name descending", byLastNameDescending);

                var byName = preferencesModel.ByName( );
                WriteRecords("By name", byName);
            }
            else if (args.Length == 2)
            {
                if (!int.TryParse(args [1], out var recordsToGenerate))
                {
                    throw new InvalidOperationException( );
                }
                var fileName = args [0];
                var fileInfo = new FileInfo(fileName);
                var format   = fileInfo.Extension.ToUpperInvariant( );

                if (fileInfo.Exists)
                {
                    Console.WriteLine($"File '{fileInfo.FullName} already exists, you must remove it manually");
                }

                var randomRecords = PreferencesHelpers.GenerateRandomRecords(recordsToGenerate, new Random( ), 7);
                using (var writer = new StreamWriter(fileInfo.FullName, false))
                {
                    var delimiterChar   = PreferencesHelpers.AssociatedDelimiter(fileInfo);
                    var delimiterString = delimiterChar.ToString( );
                    randomRecords.ForEach(r =>
                    {
                        var strings = new []
                        {
                            r.LastName,
                            r.FirstName,
                            r.Gender,
                            r.FavoriteColor,
                            r.DateOfBirth
                        }.ToList( );
                        var line = string.Join(delimiterString, strings);
                        writer.WriteLine(line);
                    });
                }
            }
            else
            {
                WriteUsageInfo( );
            }
        }
Ejemplo n.º 2
0
        public static void Test_that_ordering_is_correct( )
        {
            var randomProvider = new Random( );
            var person1        = PreferencesHelpers.GenerateRandomRecord(randomProvider);
            var person1A       = new PersonColorPreferenceModel( ).PopulateFrom(person1);

            person1A.LastName = "person1A";
            var person2  = PreferencesHelpers.GenerateRandomRecord(randomProvider);
            var person3  = PreferencesHelpers.GenerateRandomRecord(randomProvider);
            var person3A = new PersonColorPreferenceModel( ).PopulateFrom(person3);

            person3A.LastName = "person3A";

            var newRecords = new List <PersonColorPreferenceModel>
            {
                person1,
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                person1,
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                person2,
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                person2,
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                person3,
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                person3
            }.ToSafeList( );

            var model = new PreferencesModel( );

            model.Add(newRecords);

            var added                = model.PersonColorPreferences.ToSafeList( );
            var byBirthDate          = model.ByBirthDate( ).ToSafeList( );
            var byGenderLastName     = model.ByGenderLastName( ).ToSafeList( );
            var byLastNameDescending = model.ByLastNameDescending( ).ToSafeList( );
            var byName               = model.ByName( ).ToSafeList( );

            added.Aggregate((arg1, arg2) =>
            {
                Assert.True(arg1.Id < arg2.Id);
                return(arg2);
            });

            byBirthDate.Aggregate((arg1, arg2) =>
            {
                Assert.True(arg1.DateTimeBirth <= arg2.DateTimeBirth);
                return(arg2);
            });

            byGenderLastName.Aggregate((arg1, arg2) =>
            {
                var order = string.Compare(arg1.Gender, arg2.Gender, StringComparison.InvariantCulture);
                Assert.True(order <= 0);
                if (order == 0)
                {
                    var order2 = string.Compare(arg1.LastNameUpper, arg2.LastNameUpper, StringComparison.InvariantCulture);
                    Assert.True(order2 <= 0);
                }

                return(arg2);
            });

            byLastNameDescending.Aggregate((arg1, arg2) =>
            {
                Assert.True(string.Compare(arg1.LastNameUpper, arg2.LastNameUpper, StringComparison.InvariantCulture) >= 0);
                return(arg2);
            });

            byName.Aggregate((arg1, arg2) =>
            {
                var order = string.Compare(arg1.LastNameUpper, arg2.LastNameUpper, StringComparison.InvariantCulture);
                Assert.True(order <= 0);
                if (order == 0)
                {
                    var order2 = string.Compare(arg1.FirstNameUpper, arg2.FirstNameUpper, StringComparison.InvariantCulture);
                    Assert.True(order2 <= 0);
                }

                return(arg2);
            });
        }