Exemple #1
0
        public static void Test_adding_lines( )
        {
            var randomProvider = new Random( );
            var newRecords     = new List <PersonColorPreferenceModel>
            {
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider)
            }.ToSafeList( );

            const char DelimiterChar = '|';
            var        asLines       = newRecords.Select(newRecord => UnitTestHelpers.GenerateLine(newRecord, DelimiterChar)).ToSafeList( );

            var model = new PreferencesModel( );

            model.Add(asLines, DelimiterChar);

            // check records were added
            var added    = model.PersonColorPreferences.ToSafeList( );
            var knownIds = new Dictionary <int, IPersonColorPreferenceModel> ( );

            foreach (var newRecord in newRecords)
            {
                var singleRecord = Assert.Single(added, r => r.NotNull( ).LastName == newRecord.LastName).NotNull( );
                UnitTestHelpers.AssertRecordIdentical(newRecord.NotNull( ), singleRecord);
                knownIds [singleRecord.Id] = singleRecord;
            }

            Assert.NotEmpty(knownIds);
        }
Exemple #2
0
        public static void Test_add_IEnumerable_records( )
        {
            var randomProvider = new Random( );
            var newRecords     = new List <PersonColorPreferenceModel>
            {
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider),
                PreferencesHelpers.GenerateRandomRecord(randomProvider)
            }.ToSafeList( );

            var model = new PreferencesModel( );

            model.Add(newRecords);

            // check records were added
            var added    = model.PersonColorPreferences.ToSafeList( );
            var knownIds = new Dictionary <int, IPersonColorPreferenceModel> ( );

            foreach (var newRecord in newRecords)
            {
                var singleRecord = Assert.Single(added, r => r.NotNull( ).LastName == newRecord.LastName).NotNull( );
                UnitTestHelpers.AssertRecordIdentical(newRecord.NotNull( ), singleRecord);
                knownIds [singleRecord.Id] = singleRecord;
            }

            Assert.NotEmpty(knownIds);

            #endregion
        }
Exemple #3
0
        public void Test_id_is_determined_during_add( )
        {
            // Set the second last bit to ensure not 0 or 1;
            var id     = Guid.NewGuid( ).GetHashCode( ) | 0x02;
            var target = PreferencesHelpers.GenerateRandomRecord(new Random( ));

            target.Id = id;

            var model = new PreferencesModel( );

            model.Add(target);

            // Check that target.Id was not modified
            Assert.Equal(id, target.Id);

            var records  = model.PersonColorPreferences.ToSafeList( );
            var notAdded = records.FirstOrDefault(r => r.Id == id);

            Assert.Null(notAdded);

            var added = records.Single(r => r.Id == 1);

            UnitTestHelpers.AssertRecordIsShallowCopy(target, added);

            Assert.True(ReferenceEquals(added, records.Single(r => r.DateOfBirth == target.DateOfBirth)));
            Assert.True(ReferenceEquals(added, records.Single(r => r.FavoriteColor == target.FavoriteColor)));
            Assert.True(ReferenceEquals(added, records.Single(r => r.FirstName == target.FirstName)));
            Assert.True(ReferenceEquals(added, records.Single(r => r.Gender == target.Gender)));
            Assert.True(ReferenceEquals(added, records.Single(r => r.LastName == target.LastName)));
        }
Exemple #4
0
        /// <summary>
        ///     Initializes static members of the <see cref="RecordsApiModel" /> class.
        /// </summary>
        /// <autogeneratedoc />
        /// TODO Edit XML Comment Template for #ctor
        static RecordsApiModel( )
        {
            CurrentModel = new PreferencesModel( );

            // Add some random records
            var generatedRecords = PreferencesHelpers.GenerateRandomRecords(10, new Random( ), 7);

            CurrentModel.Add(generatedRecords);
        }
Exemple #5
0
        /// <summary>
        ///     Initializes static members of the <see cref="RecordsModel" /> class.
        /// </summary>
        /// <autogeneratedoc />
        /// TODO Edit XML Comment Template for #ctor
        static RecordsModel( )
        {
            // we are not persisting data for now, otherwise this would use a connection
            CurrentModel = new PreferencesModel( );

            // Add some random records
            var generatedRecords = PreferencesHelpers.GenerateRandomRecords(10, new Random( ), 7);

            CurrentModel.Add(generatedRecords);
        }
Exemple #6
0
        public static void Test_to_string_reflects_size( )
        {
            var random = new Random( );
            var model1 = new PreferencesModel( );
            var model2 = new PreferencesModel( );

            for (var i = 0; i < 5; i += 1)
            {
                Assert.Equal(i, model1.RecordsAdded);
                Assert.Equal(0, model2.RecordsAdded);
                Assert.Equal($"{model1.PersonColorPreferences.Count ( )} entries", model1.ToString( ));
                Assert.Equal($"{model2.PersonColorPreferences.Count ( )} entries", model2.ToString( ));
                model1.Add(PreferencesHelpers.GenerateRandomRecord(random));
            }
        }
Exemple #7
0
        public static void Test_add_with_just_line_properly_adds_record( )
        {
            var newRecord = PreferencesHelpers.GenerateRandomRecord(new Random( ));

            foreach (var separatorChar in PreferencesHelpers.SupportedDelimiters)
            {
                //LastName | FirstName | Gender | FavoriteColor | DateOfBirth
                //LastName, FirstName, Gender, FavoriteColor, DateOfBirth
                //LastName FirstName Gender FavoriteColor DateOfBirth
                var asLine = UnitTestHelpers.GenerateLine(newRecord, separatorChar);

                var model = new PreferencesModel( );

                model.Add(asLine);

                var added = model.PersonColorPreferences.Single( ).NotNull( );
                UnitTestHelpers.AssertRecordIdentical(newRecord, added);
            }
        }
Exemple #8
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);
            });
        }