Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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()));
 }