Beispiel #1
0
        public void Initialization()
        {
            var declaringType = MutableTypeObjectMother.Create(name: "DeclaringType");
            var baseType      = ReflectionObjectMother.GetSomeSubclassableType();
            var name          = "MyType";
            var @namespace    = "MyNs";
            var attributes    = (TypeAttributes)7;

            var mutableType = new MutableType(
                declaringType, baseType, name, @namespace, attributes, _interfaceMappingComputerMock, _mutableMemberFactoryMock);

            Assert.That(mutableType.DeclaringType, Is.SameAs(declaringType));
            Assert.That(mutableType.MutableDeclaringType, Is.SameAs(declaringType));
            Assert.That(mutableType.BaseType, Is.SameAs(baseType));
            Assert.That(mutableType.Name, Is.EqualTo(name));
            Assert.That(mutableType.Namespace, Is.EqualTo(@namespace));
            Assert.That(mutableType.FullName, Is.EqualTo("MyNs.DeclaringType+MyType"));
            Assert.That(mutableType.Attributes, Is.EqualTo(attributes));
            Assert.That(mutableType.IsGenericType, Is.False);
            Assert.That(mutableType.IsGenericTypeDefinition, Is.False);
            Assert.That(mutableType.GetGenericArguments(), Is.Empty);

            Assert.That(mutableType.AddedNestedTypes, Is.Empty);
            Assert.That(mutableType.AddedCustomAttributes, Is.Empty);
            Assert.That(mutableType.Initialization, Is.Not.Null);
            Assert.That(mutableType.AddedInterfaces, Is.Empty);
            Assert.That(mutableType.AddedFields, Is.Empty);
            Assert.That(mutableType.AddedConstructors, Is.Empty);
            Assert.That(mutableType.AddedMethods, Is.Empty);
            Assert.That(mutableType.AddedProperties, Is.Empty);
            Assert.That(mutableType.AddedEvents, Is.Empty);
        }
        public void SetGenericParameterConstraints_MoreThanOneBaseConstraint()
        {
            var baseConstraint1 = ReflectionObjectMother.GetSomeSubclassableType();
            var baseConstraint2 = ReflectionObjectMother.GetSomeSubclassableType();

            _parameter.SetGenericParameterConstraints(new[] { baseConstraint1, baseConstraint2 });
        }
Beispiel #3
0
        public void SetGenericParameterConstraints_MoreThanOneBaseConstraint()
        {
            var baseConstraint1 = ReflectionObjectMother.GetSomeSubclassableType();
            var baseConstraint2 = ReflectionObjectMother.GetSomeSubclassableType();

            Assert.That(
                () => _parameter.SetGenericParameterConstraints(new[] { baseConstraint1, baseConstraint2 }),
                Throws.ArgumentException
                .With.ArgumentExceptionMessageEqualTo("A generic parameter cannot have multiple base constraints.", "constraints"));
        }
Beispiel #4
0
        public void SetGenericParameterConstraints_BaseConstraintConflicts_WithNotNullableValueTypeConstraint()
        {
            var parameter = MutableGenericParameterObjectMother.Create(genericParameterAttributes: GenericParameterAttributes.NotNullableValueTypeConstraint);

            Assert.That(
                () => parameter.SetGenericParameterConstraints(new[] { ReflectionObjectMother.GetSomeSubclassableType() }),
                Throws.ArgumentException
                .With.ArgumentExceptionMessageEqualTo(
                    "A generic parameter cannot have a base constraint if the NotNullableValueTypeConstraint flag is set.", "constraints"));
        }
        public void SetParent()
        {
            var baseType = ReflectionObjectMother.GetSomeSubclassableType();

            var emittableType = ReflectionObjectMother.GetSomeOtherType();

            _operandProvider.Expect(mock => mock.GetEmittableType(baseType)).Return(emittableType);
            _innerMock.Expect(mock => mock.SetParent(emittableType));

            _decorator.SetParent(baseType);

            _operandProvider.VerifyAllExpectations();
            _innerMock.VerifyAllExpectations();
        }
        public void CreateClass()
        {
            var id         = new object();
            var name       = "MyName";
            var @namespace = "MyNamespace";
            var baseType   = ReflectionObjectMother.GetSomeSubclassableType();

            var result = _context.CreateClass(id, name, @namespace, baseType);

            Assert.That(_context.AdditionalTypes, Is.EqualTo(new[] { new KeyValuePair <object, MutableType> (id, result) }));
            Assert.That(result.Name, Is.EqualTo(name));
            Assert.That(result.Namespace, Is.EqualTo(@namespace));
            Assert.That(result.BaseType, Is.SameAs(baseType));
            Assert.That(result.Attributes, Is.EqualTo(TypeAttributes.Public | TypeAttributes.Class));
        }
Beispiel #7
0
        public void CreateType()
        {
            var name          = "MyName";
            var @namespace    = "MyNamespace";
            var attributes    = (TypeAttributes)7;
            var baseType      = ReflectionObjectMother.GetSomeSubclassableType();
            var declaringType = MutableTypeObjectMother.Create();

            var result = _factory.CreateType(name, @namespace, attributes, baseType, declaringType);

            Assert.That(result.Name, Is.EqualTo(name));
            Assert.That(result.Namespace, Is.EqualTo(@namespace));
            Assert.That(result.Attributes, Is.EqualTo(attributes));
            Assert.That(result.BaseType, Is.SameAs(baseType));
            Assert.That(result.DeclaringType, Is.SameAs(declaringType));
        }
        public void SetGenericParameterConstraints_BaseConstraintConflicts_WithNotNullableValueTypeConstraint()
        {
            var parameter = MutableGenericParameterObjectMother.Create(genericParameterAttributes: GenericParameterAttributes.NotNullableValueTypeConstraint);

            parameter.SetGenericParameterConstraints(new[] { ReflectionObjectMother.GetSomeSubclassableType() });
        }