public void ModificationCommand_initialized_correctly_for_added_entities_with_identity_key() { var stateEntry = CreateStateEntry(EntityState.Added, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.TableName); Assert.Equal(EntityState.Added, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.True(columnMod.IsRead); Assert.False(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); }
public void ModificationCommand_initialized_correctly_for_added_entities_with_client_generated_key() { var stateEntry = CreateStateEntry(EntityState.Added); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.SchemaQualifiedName); Assert.Equal(EntityState.Added, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); }
public void ModificationCommand_initialized_correctly_for_modified_entities_with_identity_key() { var stateEntry = CreateStateEntry(EntityState.Modified, ValueGenerationOnSave.WhenInserting); stateEntry.SetPropertyModified(stateEntry.EntityType.GetKey().Properties[0], isModified: false); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.SchemaQualifiedName); Assert.Equal(EntityState.Modified, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); }
public void ModificationCommand_initialized_correctly_for_added_entities_with_client_generated_key() { var stateEntry = CreateStateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.TableName); Assert.Equal(EntityState.Added, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); }
public void ModificationCommand_initialized_correctly_for_deleted_entities_with_concurrency_token() { var stateEntry = CreateStateEntry(EntityState.Deleted, nonKeyStrategy: ValueGenerationOnSave.WhenInsertingAndUpdating); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.SchemaQualifiedName); Assert.Equal(EntityState.Deleted, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); }
public void ModificationCommand_throws_for_unknown_entities() { var stateEntry = CreateStateEntry(EntityState.Unknown); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); Assert.Equal( Strings.FormatModificationFunctionInvalidEntityState(EntityState.Unknown), Assert.Throws <NotSupportedException>(() => command.AddStateEntry(stateEntry)).Message); }
public void RequiresResultPropagation_false_for_Update_operation_if_no_non_key_store_generated_columns_exist() { var stateEntry = CreateStateEntry(EntityState.Modified, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.False(command.RequiresResultPropagation); }
public void RequiresResultPropagation_false_for_Insert_operation_if_no_store_generated_columns_exist() { var stateEntry = CreateStateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.False(command.RequiresResultPropagation); }
public void RequiresResultPropagation_false_for_Delete_operation() { var stateEntry = CreateStateEntry( EntityState.Deleted, ValueGenerationOnSave.WhenInserting, ValueGenerationOnSave.WhenInsertingAndUpdating); var command = new ModificationCommand(new SchemaQualifiedName("T1"), new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.False(command.RequiresResultPropagation); }
public void RequiresResultPropagation_true_for_Update_operation_if_non_key_store_generated_columns_exist() { var stateEntry = CreateStateEntry( EntityState.Modified, ValueGenerationOnSave.WhenInserting, ValueGenerationOnSave.WhenInsertingAndUpdating); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.True(command.RequiresResultPropagation); }
public async Task ExecuteAsync_executes_batch_commands_and_consumes_reader() { var stateEntry = CreateStateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); var mockReader = CreateDataReaderMock(); var batch = new ModificationCommandBatchFake(mockReader.Object); batch.AddCommand(command, new Mock<SqlGenerator> { CallBase = true }.Object); await batch.ExecuteAsync(new Mock<RelationalTransaction>().Object, new RelationalTypeMapper()); mockReader.Verify(r => r.ReadAsync(It.IsAny<CancellationToken>()), Times.Exactly(1)); mockReader.Verify(r => r.NextResultAsync(It.IsAny<CancellationToken>()), Times.Once); }
public void GenerateCommandText_compiles_deletes() { var stateEntry = CreateStateEntry(EntityState.Deleted); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); var sqlGeneratorMock = new Mock<SqlGenerator>(); var batch = new ModificationCommandBatchFake(); batch.AddCommand(command, sqlGeneratorMock.Object); batch.GenerateCommandTextBase(sqlGeneratorMock.Object); sqlGeneratorMock.Verify(g => g.AppendBatchHeader(It.IsAny<StringBuilder>())); sqlGeneratorMock.Verify(g => g.AppendDeleteOperation(It.IsAny<StringBuilder>(), "T1", It.IsAny<IReadOnlyList<ColumnModification>>())); }
public void ModificationCommand_initialized_correctly_for_deleted_entities() { var stateEntry = CreateStateEntry(EntityState.Deleted); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.TableName); Assert.Equal(EntityState.Deleted, command.EntityState); Assert.Equal(1, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); }
public void ModificationCommand_initialized_correctly_for_modified_entities_with_identity_key() { var stateEntry = CreateStateEntry(EntityState.Modified, ValueGenerationOnSave.WhenInserting); stateEntry.SetPropertyModified(stateEntry.EntityType.GetKey().Properties[0], isModified: false); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.TableName); Assert.Equal(EntityState.Modified, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.False(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.True(columnMod.IsWrite); }
public async Task Exception_thrown_if_no_rows_returned_for_command_with_store_generated_values() { var stateEntry = CreateStateEntry(EntityState.Added, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); var batch = new ModificationCommandBatchFake(CreateDataReaderMock(new[] { "Col1" }, new List<object[]>()).Object); batch.AddCommand(command, new Mock<SqlGenerator> { CallBase = true }.Object); Assert.Equal(Strings.FormatUpdateConcurrencyException(1, 0), (await Assert.ThrowsAsync<DbUpdateConcurrencyException>( async () => await batch.ExecuteAsync(new Mock<RelationalTransaction>().Object, new RelationalTypeMapper()))).Message); }
public async Task Exception_not_thrown_for_more_than_one_row_returned_for_single_command() { var stateEntry = CreateStateEntry(EntityState.Added, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); var mockReader = CreateDataReaderMock(new[] { "Col1" }, new List<object[]> { new object[] { 42 }, new object[] { 43 } }); var batch = new ModificationCommandBatchFake(mockReader.Object); batch.AddCommand(command, new Mock<SqlGenerator> { CallBase = true }.Object); await batch.ExecuteAsync(new Mock<RelationalTransaction>().Object, new RelationalTypeMapper()); Assert.Equal(42, stateEntry[stateEntry.EntityType.GetProperty("Id")]); }
public void ModificationCommand_initialized_correctly_for_deleted_entities_with_concurrency_token() { var stateEntry = CreateStateEntry(EntityState.Deleted, nonKeyStrategy: ValueGenerationOnSave.WhenInsertingAndUpdating); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.Equal("T1", command.TableName); Assert.Equal(EntityState.Deleted, command.EntityState); Assert.Equal(2, command.ColumnModifications.Count); var columnMod = command.ColumnModifications[0]; Assert.Equal("Col1", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Id", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.True(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); columnMod = command.ColumnModifications[1]; Assert.Equal("Col2", columnMod.ColumnName); Assert.Same(stateEntry, columnMod.StateEntry); Assert.Equal("Name", columnMod.Property.Name); Assert.True(columnMod.IsCondition); Assert.False(columnMod.IsKey); Assert.False(columnMod.IsRead); Assert.False(columnMod.IsWrite); }
public void ModificationCommand_throws_for_unknown_entities() { var stateEntry = CreateStateEntry(EntityState.Unknown); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); Assert.Equal( Strings.FormatModificationFunctionInvalidEntityState(EntityState.Unknown), Assert.Throws<NotSupportedException>(() => command.AddStateEntry(stateEntry)).Message); }
public void RequiresResultPropagation_false_for_Delete_operation() { var stateEntry = CreateStateEntry( EntityState.Deleted, ValueGenerationOnSave.WhenInserting, ValueGenerationOnSave.WhenInsertingAndUpdating); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.False(command.RequiresResultPropagation); }
public void RequiresResultPropagation_false_for_Update_operation_if_no_non_key_store_generated_columns_exist() { var stateEntry = CreateStateEntry(EntityState.Modified, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); Assert.False(command.RequiresResultPropagation); }
public async Task ExecuteAsync_saves_store_generated_values() { var stateEntry = CreateStateEntry(EntityState.Added, ValueGenerationOnSave.WhenInserting); var command = new ModificationCommand("T1", null, new ParameterNameGenerator()); command.AddStateEntry(stateEntry); var batch = new ModificationCommandBatchFake(CreateDataReaderMock(new[] { "Col1" }, new List<object[]> { new object[] { 42 } }).Object); batch.AddCommand(command, new Mock<SqlGenerator> { CallBase = true }.Object); await batch.ExecuteAsync(new Mock<RelationalTransaction>().Object, new RelationalTypeMapper()); Assert.Equal(42, stateEntry[stateEntry.EntityType.GetProperty("Id")]); Assert.Equal("Test", stateEntry[stateEntry.EntityType.GetProperty("Name")]); }
public void Compare_returns_0_only_for_commands_that_are_equal() { var mCC = new ModificationCommandComparer(); var configuration = new DbContext(new DbContextOptions().UseInMemoryStore(persist: false)).Configuration; var entityType1 = new EntityType(typeof(object)); var key1 = entityType1.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType1.SetKey(key1); var stateEntry1 = new MixedStateEntry(configuration, entityType1, new object()); stateEntry1[key1] = 0; stateEntry1.EntityState = EntityState.Added; var modificationCommandAdded = new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()); modificationCommandAdded.AddStateEntry(stateEntry1); var entityType2 = new EntityType(typeof(object)); var key2 = entityType2.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType2.SetKey(key2); var stateEntry2 = new MixedStateEntry(configuration, entityType2, new object()); stateEntry2[key2] = 0; stateEntry2.EntityState = EntityState.Modified; var modificationCommandModified = new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()); modificationCommandModified.AddStateEntry(stateEntry2); var entityType3 = new EntityType(typeof(object)); var key3 = entityType3.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType3.SetKey(key3); var stateEntry3 = new MixedStateEntry(configuration, entityType3, new object()); stateEntry3[key3] = 0; stateEntry3.EntityState = EntityState.Deleted; var modificationCommandDeleted = new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()); modificationCommandDeleted.AddStateEntry(stateEntry3); Assert.True(0 == mCC.Compare(modificationCommandAdded, modificationCommandAdded)); Assert.True(0 == mCC.Compare(null, null)); Assert.True(0 == mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(null, new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()), null)); Assert.True(0 > mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A", "foo"), new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A", "foo"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A", "dbo"), new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare( new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("B"), new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare( new ModificationCommand(new SchemaQualifiedName("B"), new ParameterNameGenerator()), new ModificationCommand(new SchemaQualifiedName("A"), new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(modificationCommandModified, modificationCommandAdded)); Assert.True(0 < mCC.Compare(modificationCommandAdded, modificationCommandModified)); Assert.True(0 > mCC.Compare(modificationCommandDeleted, modificationCommandAdded)); Assert.True(0 < mCC.Compare(modificationCommandAdded, modificationCommandDeleted)); Assert.True(0 > mCC.Compare(modificationCommandDeleted, modificationCommandModified)); Assert.True(0 < mCC.Compare(modificationCommandModified, modificationCommandDeleted)); }
public void Compare_returns_0_only_for_commands_that_are_equal() { var mCC = new ModificationCommandComparer(); var configuration = new DbContext(new DbContextOptions().UseInMemoryStore(persist: false)).Configuration; var entityType1 = new EntityType(typeof(object)); var key1 = entityType1.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType1.SetKey(key1); var stateEntry1 = new MixedStateEntry(configuration, entityType1, new object()); stateEntry1[key1] = 0; stateEntry1.EntityState = EntityState.Added; var modificationCommandAdded = new ModificationCommand("A", null, new ParameterNameGenerator()); modificationCommandAdded.AddStateEntry(stateEntry1); var entityType2 = new EntityType(typeof(object)); var key2 = entityType2.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType2.SetKey(key2); var stateEntry2 = new MixedStateEntry(configuration, entityType2, new object()); stateEntry2[key2] = 0; stateEntry2.EntityState = EntityState.Modified; var modificationCommandModified = new ModificationCommand("A", null, new ParameterNameGenerator()); modificationCommandModified.AddStateEntry(stateEntry2); var entityType3 = new EntityType(typeof(object)); var key3 = entityType3.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); entityType3.SetKey(key3); var stateEntry3 = new MixedStateEntry(configuration, entityType3, new object()); stateEntry3[key3] = 0; stateEntry3.EntityState = EntityState.Deleted; var modificationCommandDeleted = new ModificationCommand("A", null, new ParameterNameGenerator()); modificationCommandDeleted.AddStateEntry(stateEntry3); Assert.True(0 == mCC.Compare(new ModificationCommand("A", null, new ParameterNameGenerator()), new ModificationCommand("A", null, new ParameterNameGenerator()))); Assert.True(0 == mCC.Compare(new ModificationCommand("A", "dbo", new ParameterNameGenerator()), new ModificationCommand("A", "dbo", new ParameterNameGenerator()))); Assert.True(0 == mCC.Compare(null, null)); Assert.True(0 > mCC.Compare(new ModificationCommand("A", null, new ParameterNameGenerator()), new ModificationCommand("A", "dbo", new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand("A", "foo", new ParameterNameGenerator()), new ModificationCommand("A", "dbo", new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(null, new ModificationCommand("A", null, new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand("A", null, new ParameterNameGenerator()), null)); Assert.True(0 > mCC.Compare(new ModificationCommand("A", null, new ParameterNameGenerator()), new ModificationCommand("B", null, new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand("B", null, new ParameterNameGenerator()), new ModificationCommand("A", null, new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(new ModificationCommand("A", "dbo", new ParameterNameGenerator()), new ModificationCommand("B", "dbo", new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand("B", "dbo", new ParameterNameGenerator()), new ModificationCommand("A", "dbo", new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(new ModificationCommand("A", "dbo", new ParameterNameGenerator()), new ModificationCommand("B", null, new ParameterNameGenerator()))); Assert.True(0 < mCC.Compare(new ModificationCommand("B", "dbo", new ParameterNameGenerator()), new ModificationCommand("A", "foo", new ParameterNameGenerator()))); Assert.True(0 > mCC.Compare(modificationCommandModified, modificationCommandAdded)); Assert.True(0 < mCC.Compare(modificationCommandAdded, modificationCommandModified)); Assert.True(0 > mCC.Compare(modificationCommandDeleted, modificationCommandAdded)); Assert.True(0 < mCC.Compare(modificationCommandAdded, modificationCommandDeleted)); Assert.True(0 > mCC.Compare(modificationCommandDeleted, modificationCommandModified)); Assert.True(0 < mCC.Compare(modificationCommandModified, modificationCommandDeleted)); }