public void Factory_creates_expected_comparer(Type expectedComparer, string property) { using var context = new GodzillaContext(); var factory = new CurrentValueComparerFactory(); Assert.IsType(expectedComparer, factory.Create(context.Model.FindEntityType(typeof(Godzilla)).FindProperty(property))); }
public void Factory_throws_if_model_and_provider_type_are_not_comparable() { using var context = new GodzillaContext(); var factory = new CurrentValueComparerFactory(); Assert.Equal( CoreStrings.NonComparableKeyTypes( nameof(Godzilla), nameof(Godzilla.NotComparableConverted), nameof(NotComparable), nameof(NotComparable)), Assert.Throws <InvalidOperationException>( () => factory.Create( context.Model.FindEntityType(typeof(Godzilla)).FindProperty(nameof(Godzilla.NotComparableConverted)))).Message); }
private void CanSortNullable( string propertyName, Func <byte[], Godzilla> generator, Func <Godzilla, byte[]> selector) { using var context = new GodzillaContext(); context.AttachRange( generator(null), generator(new byte[] { 9 }), generator(null), generator(new byte[] { 3, 3, 3 }), generator(new byte[] { 1, 1 }), generator(new byte[] { 9 }), generator(new byte[] { 7 }), generator(new byte[] { 3, 3 })); var comparer = context.Model .FindEntityType(typeof(Godzilla)) .FindProperty(propertyName) .GetCurrentValueComparer(); var entries = context.ChangeTracker.Entries <Godzilla>() .OrderBy(e => e.GetInfrastructure(), comparer) .Select(e => selector(e.Entity)) .ToList(); Assert.Equal( new[] { null, null, new byte[] { 7 }, new byte[] { 9 }, new byte[] { 9 }, new byte[] { 1, 1 }, new byte[] { 3, 3 }, new byte[] { 3, 3, 3 } }, entries); }
private void CanSort( string propertyName, Func <int, Godzilla> generator, Func <Godzilla, int> selector) { using var context = new GodzillaContext(); context.AttachRange( generator(0), generator(9), generator(0), generator(3), generator(1), generator(9), generator(7), generator(3)); var comparer = context.Model .FindEntityType(typeof(Godzilla)) .FindProperty(propertyName) .GetCurrentValueComparer(); var entries = context.ChangeTracker.Entries <Godzilla>() .OrderBy(e => e.GetInfrastructure(), comparer) .Select(e => selector(e.Entity)) .ToList(); Assert.Equal(new[] { 0, 0, 1, 3, 3, 7, 9, 9 }, entries); }