Esempio n. 1
0
        public void TestGenericField()//ported from simplTestCases tests.generics.TestSimplGenerics.java
        {
            // Search.results
            ClassDescriptor       c     = ClassDescriptor.GetClassDescriptor(typeof(Search <>));
            List <GenericTypeVar> cvars = c.GetGenericTypeVars();
            FieldDescriptor       f     = c.GetFieldDescriptorByFieldName("searchResults");
            List <GenericTypeVar> vars  = f.GetGenericTypeVars();
            GenericTypeVar        var1  = vars[0];

            Assert.AreEqual(var1.Name, "T");
            Assert.AreSame(var1.ReferredGenericTypeVar, cvars[0]);

            // MediaSearch.results
            c     = ClassDescriptor.GetClassDescriptor(typeof(MediaSearch <,>));
            cvars = c.GetGenericTypeVars();
            f     = c.GetFieldDescriptorByFieldName("searchResults");
            vars  = f.GetGenericTypeVars();
            var1  = vars[0];
            Assert.AreEqual(var1.Name, "T");
            Assert.AreSame(var1.ReferredGenericTypeVar, cvars[1]);

            // MediaSearch.firstResult
            f    = c.GetFieldDescriptorByFieldName("firstResult");
            vars = f.GetGenericTypeVars();
            var1 = vars[0];
            Assert.AreSame(var1.ClassDescriptor, ClassDescriptor.GetClassDescriptor(typeof(Media)));

            // MediaSearchResult.media
            c     = ClassDescriptor.GetClassDescriptor(typeof(MediaSearchResult <>));
            cvars = c.GetGenericTypeVars();
            f     = c.GetFieldDescriptorByFieldName("media");
            vars  = f.GetGenericTypeVars();
            var1  = vars[0];
            Assert.AreEqual(var1.Name, "M");
            Assert.AreSame(var1.ReferredGenericTypeVar, cvars[0]);

            // MeidaSearchResult.ms
            f    = c.GetFieldDescriptorByFieldName("ms");
            vars = f.GetGenericTypeVars();
            var1 = vars[0];
            Assert.AreEqual(var1.Name, "M");
            Assert.AreSame(var1.ReferredGenericTypeVar, cvars[0]);
            GenericTypeVar var2 = vars[1];

            Assert.AreSame(var2.ClassDescriptor, ClassDescriptor.GetClassDescriptor(typeof(MediaSearchResult <>)));
            List <GenericTypeVar> var2args = var2.GenericTypeVarArgs;

            Assert.AreEqual(var2args.Count, 1);
            GenericTypeVar var2arg1 = var2args[0];

            Assert.AreEqual(var2arg1.Name, "M");
            Assert.AreSame(var2arg1.ReferredGenericTypeVar, cvars[0]);
        }