public void When_data_tables_are_identical_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2); }
public void When_data_table_data_matches_in_different_order_and_the_row_match_mode_is_by_primary_key_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, randomizeRowOrder: true); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.UsingRowMatchMode(RowMatchMode.PrimaryKey)); }
public void When_data_set_tables_are_the_same_but_in_a_different_order_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2); }
public void When_DataSets_are_identical_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2); }
public void When_columns_for_constraint_in_data_table_do_not_match_message_should_list_all_columns_involved(NumberOfColumnsInConstraintDifference difference) { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable2"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable2"]; int differenceCount = difference switch { NumberOfColumnsInConstraintDifference.SingleColumn => 1, NumberOfColumnsInConstraintDifference.MultipleColumns => 2, _ => throw new Exception("Sanity failure") }; var dataTable1ColumnsForConstraint = dataTable1.Columns.Cast<DataColumn>() .Take(dataTable1.Columns.Count - differenceCount) .ToArray(); var dataTable2ColumnsForConstraint = dataTable2.Columns.Cast<DataColumn>() .Skip(differenceCount) .ToArray(); const string ConstraintName = "TestSubjectConstraint"; dataTable1.Constraints.Add(new UniqueConstraint(ConstraintName, dataTable1ColumnsForConstraint)); dataTable2.Constraints.Add(new UniqueConstraint(ConstraintName, dataTable2ColumnsForConstraint)); var missingColumnNames = dataTable2ColumnsForConstraint.Select(col => col.ColumnName) .Except(dataTable1ColumnsForConstraint.Select(col => col.ColumnName)); var extraColumnNames = dataTable1ColumnsForConstraint.Select(col => col.ColumnName) .Except(dataTable2ColumnsForConstraint.Select(col => col.ColumnName)); string columnsNoun = differenceCount == 1 ? "column" : "columns"; // Act Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2); // Assert action.Should().Throw<XunitException>().WithMessage( $"Expected *{ConstraintName}* to include {columnsNoun} {string.Join("*", missingColumnNames)}*" + $"Did not expect *{ConstraintName}* to include {columnsNoun} {string.Join("*", extraColumnNames)}*"); }
public void When_data_table_display_expression_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; dataTable2.DisplayExpression = typedDataSet2.TypedDataTable1.StringColumn.ColumnName; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.DisplayExpression)); }
public void When_data_table_case_sensitivity_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.CaseSensitive = !typedDataSet2.CaseSensitive; var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.CaseSensitive)); }
public void When_ExtendedProperties_do_not_match_and_property_is_excluded_it_should_succeed(ChangeType changeType) { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; ApplyChange(dataTable2.ExtendedProperties, changeType); // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.ExtendedProperties)); }
public void When_data_set_extended_properties_do_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed(ChangeType changeType) { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); ApplyChange(typedDataSet2.ExtendedProperties, changeType); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.ExtendedProperties)); }
public void When_Locale_does_not_match_and_property_is_excluded_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.Locale = new CultureInfo("fr-CA"); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.Locale)); }
public void When_one_data_set_is_configured_to_enforce_constraints_and_the_other_is_not_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.EnforceConstraints = !typedDataSet2.EnforceConstraints; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.EnforceConstraints)); }
public void When_EnforceConstraints_does_not_match_and_property_is_excluded_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.EnforceConstraints = !typedDataSet2.EnforceConstraints; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.EnforceConstraints)); }
public void When_HasErrors_does_not_match_and_property_is_excluded_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, config => config.Excluding(dataSet => dataSet.HasErrors).ExcludingTables("TypedDataTable1")); }
public void When_data_set_prefix_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.Prefix += "different"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.Prefix)); }
public void When_Prefix_does_not_match_and_property_is_excluded_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; dataTable2.Prefix += "different"; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.Prefix)); }
public void When_one_data_set_has_errors_and_the_other_does_not_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, config => config.Excluding(dataSet => dataSet.HasErrors).ExcludingTables("TypedDataTable1")); }
public void When_data_table_locale_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet1.Locale = new CultureInfo("en-US"); typedDataSet2.Locale = new CultureInfo("fr-CA"); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.Locale)); }
public void When_data_table_constraints_do_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed(ChangeType changeType) { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable2"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable2"]; ApplyChange(dataTable2.Constraints, dataTable2.Columns["Decimal"], changeType); // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options .Excluding(dataTable => dataTable.Constraints) .ExcludingRelated((DataColumn dataColumn) => dataColumn.Unique)); }
public void When_one_data_table_has_errors_and_the_other_does_not_but_the_property_that_indicates_the_presence_of_errors_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; dataTable2.Rows[0].RowError = "Manually added error"; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, config => config .Excluding(dataTable => dataTable.HasErrors) .ExcludingRelated((DataRow dataRow) => dataRow.HasErrors)); }
public void When_DataSetName_does_not_match_and_property_is_excluded_it_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.DataSetName += "different"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act & Assert dataSet1.Should().BeEquivalentTo(dataSet2, options => options .Excluding(dataSet => dataSet.DataSetName) .ExcludingRelated((DataRelation dataRelation) => dataRelation.DataSet)); }
public void When_data_table_name_does_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; dataTable2.TableName += "different"; // Act Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2); // Assert action.Should().Throw<XunitException>().WithMessage("Expected dataTable1 to have TableName *different*, but found *TypedDataTable1* instead*"); }
public void When_data_table_namespace_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed() { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.Namespace += "different"; var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options .Excluding(dataTable => dataTable.Namespace) .ExcludingRelated((DataColumn dataColumn) => dataColumn.Namespace)); }
public void When_data_table_columns_do_not_match_but_columns_and_rows_are_excluded_equivalence_test_should_succeed(ChangeType changeType) { // Arrange var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; ApplyChange(dataTable2.Columns, changeType); // Act & Assert dataTable1.Should().BeEquivalentTo(dataTable2, options => options .Excluding(dataTable => dataTable.Columns) .Excluding(dataTable => dataTable.Rows)); }
public void When_TableName_does_not_match_and_property_is_not_excluded_it_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"]; var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"]; dataTable2.TableName += "different"; // Act Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2); // Assert action.Should().Throw <XunitException>(); }
public void When_data_set_tables_contain_different_data_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true); typedDataSet2.TypedDataTable2[0].Guid = Guid.NewGuid(); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2); // Assert action.Should().Throw <XunitException>().WithMessage("Expected dataSet1[TypedDataTable2].Rows[0] to have RowState value of *Modified*, but found *Unchanged* instead*"); }
public void When_data_set_table_count_matches_but_tables_are_different_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true); typedDataSet2.TypedDataTable2.TableName = "DifferentTableName"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2); // Assert action.Should().Throw <XunitException>().WithMessage("Expected dataSet1.Relations[0].ExtendedProperties* to reference column *ForeignRowID* in table *Different*, but found a reference to *ForeignRowID* in table *TypedDataTable2* instead*"); }
public void When_data_set_table_count_does_not_match_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true); typedDataSet2.Tables.Add(new DataTable("ThirdWheel")); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2); // Assert action.Should().Throw <XunitException>().Which.Message.Should().Contain("to contain " + dataSet2.Tables.Count); }
public void When_one_data_set_has_errors_and_the_other_does_not_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2, config => config.ExcludingTables("TypedDataTable1")); // Assert action.Should().Throw <XunitException>().Which.Message.Should().Contain("HasErrors"); }
public void When_data_set_prefix_does_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail() { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); typedDataSet2.Prefix += "different"; var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2); // Assert action.Should().Throw <XunitException>().WithMessage("Expected dataSet1 to have Prefix value of *different*"); }
public void When_data_set_extended_properties_do_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail(ChangeType changeType) { // Arrange var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>(); var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1); ApplyChange(typedDataSet2.ExtendedProperties, changeType); var dataSet1 = typedDataSet1.ToUntypedDataSet(); var dataSet2 = typedDataSet2.ToUntypedDataSet(); // Act Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2); // Assert action.Should().Throw <XunitException>().WithMessage("Expected *dataSet1.ExtendedProperties* to be *, but *"); }