public void BusinessLogicViewModel_Add_ValidGenericTypeParam_Only()
        {
            // This test is for the CodeGenUtilities.IsValidGenericTypeParam which is used
            // by the BusinessLogicClassViewModel to determine what contexts to load and
            // what enitites to enable.

            Type[] candidates = new Type[]
            {
                typeof(PublicEmptyType),
                typeof(PublicNonEmptyClass),
                typeof(PublicNoDefaultCtrClass),
                typeof(PrivateEmptyClass),
                typeof(PrivateNonEmptyClass),
                typeof(PrivateNoDefaultCtrClass),
                typeof(InternalEmptyType),
                typeof(InternalNonEmptyClass),
                typeof(InternalNoDefaultCtrClass),
                typeof(InterfaceType),
                typeof(PublicAbstractType),
                typeof(PrivateAbstractType),
                typeof(InternalAbstractType),
                typeof(PublicStructType),
                typeof(PrivateStructType),
                typeof(InternalStructType),
            };

            Type[] validTypes = new Type[]
            {
                typeof(PublicEmptyType),
                typeof(PublicNonEmptyClass),
                typeof(PublicAbstractType),
            };

            List <Type> actualTypes = new List <Type>();

            foreach (Type candidate in candidates)
            {
                if (CodeGenUtilities.IsValidGenericTypeParam(candidate))
                {
                    actualTypes.Add(candidate);
                }
            }

            Assert.AreEqual(validTypes.Length, actualTypes.Count, "Invalid types in resulting list!");

            // The list of contexts must be sorted
            foreach (Type validType in validTypes)
            {
                Assert.IsTrue(actualTypes.Contains(validType), "Valid type missing from resulting list!");
            }
        }