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); }
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 }
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))); }
/// <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); }
/// <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); }
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)); } }
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); } }
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); }); }