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]); }