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)); }
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 }); }); }
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)); }
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); } ); }
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); }); }
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"); }
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()); }
public void NoConstructorInfoTest() { Assert.Throws<ArgumentNullException>(() => { var objCreationData = new ObjectCreationData(null); }); }