예제 #1
0
        public void GetGenericArgumentValue()
        {
            ConstructorArgumentValues values = new ConstructorArgumentValues();

            Assert.IsNull(values.GetGenericArgumentValue(typeof(object)), "Mmm... managed to get a non null instance back from an empty instance.");
            values.AddGenericArgumentValue(DBNull.Value, typeof(DBNull).FullName);
            Assert.IsNull(values.GetGenericArgumentValue(typeof(string)), "Mmm... managed to get a non null instance back from an instance that should have now't with the specified Type.");
            ConstructorArgumentValues.ValueHolder value =
                values.GetGenericArgumentValue(typeof(DBNull));
            Assert.IsNotNull(value, "Stored a value of a specified Type, but got null when retrieving it using said Type.");
            Assert.AreSame(DBNull.Value, value.Value, "The value stored at the specified index was not the exact same instance as was added.");
        }
예제 #2
0
        public void ValueHolderToStringsNicely()
        {
            ConstructorArgumentValues values = new ConstructorArgumentValues();

            values.AddGenericArgumentValue(1, typeof(int).FullName);
            ConstructorArgumentValues.ValueHolder vh = values.GetGenericArgumentValue(typeof(int));
            Assert.AreEqual("'1' [System.Int32]", vh.ToString());
        }
예제 #3
0
        public void GetGeneric_Untyped_ArgumentValueWithOnlyStronglyTypedValuesInTheCtorValueList()
        {
            ConstructorArgumentValues values = new ConstructorArgumentValues();
            const string expectedValue       = "Rick";

            values.AddGenericArgumentValue(expectedValue, typeof(string).FullName);

            ConstructorArgumentValues.ValueHolder name = values.GetGenericArgumentValue(null, null);
            Assert.IsNull(name,
                          "Must get null valueholder back if no required type is specified but only " +
                          "strongly typed values are present in the ctor values list.");
        }
예제 #4
0
        public void GetGeneric_Untyped_ArgumentValue()
        {
            ConstructorArgumentValues values = new ConstructorArgumentValues();
            const string expectedValue       = "Rick";

            values.AddGenericArgumentValue(expectedValue);

            ConstructorArgumentValues.ValueHolder name = values.GetGenericArgumentValue(null, null);
            Assert.IsNotNull(name,
                             "Must get non-null valueholder back if no required type is specified.");
            Assert.AreEqual(expectedValue, name.Value);
        }
예제 #5
0
        public void GetGenericArgumentValueIgnoresAlreadyUsedValues()
        {
            ISet used = new ListSet();

            ConstructorArgumentValues values = new ConstructorArgumentValues();

            values.AddGenericArgumentValue(1);
            values.AddGenericArgumentValue(2);
            values.AddGenericArgumentValue(3);

            Type intType = typeof(int);

            ConstructorArgumentValues.ValueHolder one = values.GetGenericArgumentValue(intType, used);
            Assert.AreEqual(1, one.Value);
            used.Add(one);
            ConstructorArgumentValues.ValueHolder two = values.GetGenericArgumentValue(intType, used);
            Assert.AreEqual(2, two.Value);
            used.Add(two);
            ConstructorArgumentValues.ValueHolder three = values.GetGenericArgumentValue(intType, used);
            Assert.AreEqual(3, three.Value);
            used.Add(three);
            ConstructorArgumentValues.ValueHolder four = values.GetGenericArgumentValue(intType, used);
            Assert.IsNull(four);
        }