public void ReturnsTrueWhenPropertyIsCollection([Frozen] IEntityTypesProvider typesProvider, SUT sut) { typesProvider.GetTypes().Returns(new[] { typeof(Qux), typeof(Bar) }); var property = typeof(Bar).GetProperty("Quxes"); var result = sut.IsSatisfiedBy(property); result.Should().BeTrue(); }
public void ReturnsTrueWhenBothTypesRegistered([Frozen] IEntityTypesProvider typesProvider, SUT sut) { typesProvider.GetTypes().Returns(new[] { typeof(Foo), typeof(Bar) }); var property = typeof(Foo).GetProperty("Bar"); var result = sut.IsSatisfiedBy(property); result.Should().BeTrue(); }
public void ReturnsFalseWhenDeclaringTypeNotRegistered([Frozen] IEntityTypesProvider typesProvider, SUT sut) { typesProvider.GetTypes().Returns(new[] { typeof(Bar) }); var property = typeof(Foo).GetProperty("Bar"); var result = sut.IsSatisfiedBy(property); result.Should().BeFalse(); }
public void SutIsDecorator([Frozen] IEntityTypesProvider decorated, CachedEntityTypesProvider sut) { var types = new[] { typeof(Foo), typeof(Bar), typeof(Qux) }; decorated.GetTypes().Returns(types); var result = sut.GetTypes(); result.Should().BeEquivalentTo(types); }
public void TypesEnumeratedOnlyOnce([Frozen] IEntityTypesProvider decorated, CachedEntityTypesProvider sut) { IEnumerable <Type> typesFirst = new[] { typeof(Foo), typeof(Bar) }; IEnumerable <Type> typesSecond = new[] { typeof(Qux), typeof(object) }; decorated.GetTypes().Returns(typesFirst, typesSecond); var resultFirst = sut.GetTypes(); var resultSecond = sut.GetTypes(); resultSecond.Should().BeEquivalentTo(typesFirst) .And.BeEquivalentTo(resultFirst); }
public bool IsSatisfiedBy(object request) { if (request == null) { throw new ArgumentNullException("request"); } var pi = request as PropertyInfo; if (pi == null) { return(false); } if (!pi.GetGetMethod().IsVirtual) { return(false); } var entityTypes = _entityTypesProvider.GetTypes(); if (!entityTypes.Contains(pi.DeclaringType) && !entityTypes.Contains(pi.DeclaringType.BaseType)) { return(false); } if (entityTypes.Contains(pi.PropertyType)) { return(true); } var t = pi.PropertyType; return(t.IsGenericType && t.GetGenericTypeDefinition() == typeof(ICollection <>) && entityTypes.Contains(t.GenericTypeArguments[0])); }
public bool IsSatisfiedBy(object request) { var type = request as Type; return(type != null && _entityTypesProvider.GetTypes().Contains(type)); }
public CachedEntityTypesProvider(IEntityTypesProvider decorated) { _types = new Lazy<HashSet<Type>>(() => new HashSet<Type>(decorated.GetTypes())); }
public CachedEntityTypesProvider(IEntityTypesProvider decorated) { _types = new Lazy <HashSet <Type> >(() => new HashSet <Type>(decorated.GetTypes())); }