コード例 #1
0
        public void StringTest()
        {
            Type stringType = typeof(String);
            var constructor = stringType.GetConstructor(new Type[]{typeof(char), typeof(Int32)});
            var c = new ObjectInstance('I');
            var i = new ObjectInstance(32);

            var objCreationData = new ObjectCreationData(constructor, new List<ObjectInstance>(){c, i});
            Assert.That(objCreationData.HasArguments, Is.True);
            Assert.That(objCreationData.Arguments.Count, Is.EqualTo(2));
            Assert.That(objCreationData.Constructor, Is.EqualTo(constructor));
        }
コード例 #2
0
        public void ArgumentsMatchParametersTest()
        {
            Type stringType = typeof(String);
            var constructor = stringType.GetConstructor(new Type[] { typeof(char), typeof(Int32) });
            var c = new ObjectInstance('I');
            var i = new ObjectInstance(32);

            Assert.DoesNotThrow(() =>
            {
                ObjectCreationData objCreationData = new ObjectCreationData(constructor, new List<ObjectInstance>() { c, i });
            });
        }
コード例 #3
0
        public void NonPrimitiveInstanceTest()
        {
            List<String> testList = new List<String>();
            Type listType = testList.GetType();

            var creationData = new ObjectCreationData(listType.GetConstructor(Type.EmptyTypes));

            var objInstance = new ObjectInstance(testList, creationData);
            Assert.That(objInstance.Instance, Is.SameAs(testList));
            Assert.That(objInstance.InstanceNeedsConstructor, Is.True);
            Assert.That(objInstance.CreationData, Is.SameAs(creationData));
        }
コード例 #4
0
        public void InstanceThatDoesntNeedConstructorMustNotHaveCreationDataTest()
        {
            var creationData = new ObjectCreationData(typeof(String).GetConstructor(new Type[] { typeof(Char), typeof(Int32) }),
                new List<ObjectInstance>() { new ObjectInstance('T'), new ObjectInstance(5) });

            Assert.Throws<ArgumentException>(() =>
            {
                var objInstance = new ObjectInstance('c', creationData);
            }

                );
        }
コード例 #5
0
        public void ConstructorMustMatchInstanceTest()
        {
            List<String> testList = new List<string>();
            Type t = typeof(ArgumentException);

            var creationData = new ObjectCreationData(t.GetConstructor(Type.EmptyTypes));

            Assert.Throws<ArgumentException>(() =>
            {
                var objInstance = new ObjectInstance(testList, creationData);
            });
        }
コード例 #6
0
ファイル: ObjectInstance.cs プロジェクト: eneiand/Baseline
        public ObjectInstance(Object instance, ObjectCreationData objectCreationData = null)
        {
            if (instance == null) throw new ArgumentNullException("instance");
            if (!NeedsConstructor(instance.GetType()) && objectCreationData != null)
                throw new ArgumentException("primitive object does not need creationData", "instance");
            if (NeedsConstructor(instance.GetType()) && objectCreationData == null)
                throw new ArgumentException("instance requires objectCreationData", "instance");

            Instance = instance;
            CreationData = objectCreationData;

            if (CreationData != null)
                if (CreationData.Constructor.ReflectedType != Instance.GetType())
                    throw new ArgumentException("objCreationData.Constructor does not match instance");
        }
コード例 #7
0
        public void ToStringTest()
        {
            Type stringType = typeof(String);
            var constructor = stringType.GetConstructor(new Type[] { typeof(char), typeof(Int32) });
            var c = new ObjectInstance('I');
            var i = new ObjectInstance(32);

            var objCreationData = new ObjectCreationData(constructor, new List<ObjectInstance>() { c, i });

            var s = new StringBuilder(objCreationData.Constructor.ToString() + " ");

            objCreationData.Arguments.ForEach(a => { s.Append(a); s.Append(" "); });

            Assert.That(s.ToString() == objCreationData.ToString());
        }
コード例 #8
0
 public void NoConstructorInfoTest()
 {
     Assert.Throws<ArgumentNullException>(() => {
         var objCreationData = new ObjectCreationData(null);
     });
 }