public void AddRange() { CodeTypeParameter tp1 = new CodeTypeParameter(); CodeTypeParameter tp2 = new CodeTypeParameter(); CodeTypeParameter tp3 = new CodeTypeParameter(); CodeTypeParameterCollection coll1 = new CodeTypeParameterCollection(); coll1.Add(tp1); coll1.Add(tp2); CodeTypeParameterCollection coll2 = new CodeTypeParameterCollection(); coll2.Add(tp3); coll2.AddRange(coll1); Assert.AreEqual(3, coll2.Count, "#1"); Assert.AreEqual(1, coll2.IndexOf(tp1), "#2"); Assert.AreEqual(2, coll2.IndexOf(tp2), "#3"); Assert.AreEqual(0, coll2.IndexOf(tp3), "#4"); CodeTypeParameterCollection coll3 = new CodeTypeParameterCollection(); coll3.Add(tp3); coll3.AddRange(new CodeTypeParameter[] { tp1, tp2 }); Assert.AreEqual(3, coll2.Count, "#5"); Assert.AreEqual(1, coll2.IndexOf(tp1), "#6"); Assert.AreEqual(2, coll2.IndexOf(tp2), "#7"); Assert.AreEqual(0, coll2.IndexOf(tp3), "#8"); }
static void AddGenericTypeParameters(CodeTypeParameterCollection declarationTypeParameters, Type[] typeParameters, HashSet <string> importNamespaces) { declarationTypeParameters.AddRange(Array.ConvertAll(typeParameters, parameter => { var constraints = parameter.GetGenericParameterConstraints(); var parameterDeclaration = new CodeTypeParameter(parameter.Name); for (int i = 0; i < constraints.Length; i++) { var constraintDeclaration = constraints[i] == typeof(ValueType) ? new CodeTypeReference(constraints[i]) : GetTypeReference(constraints[i], importNamespaces); parameterDeclaration.Constraints.Add(constraintDeclaration); } var classConstraint = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.ReferenceTypeConstraint); if (classConstraint) { parameterDeclaration.Constraints.Add(typeof(object)); } var structConstraint = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.NotNullableValueTypeConstraint); var defaultConstructor = parameter.GenericParameterAttributes.HasFlag(GenericParameterAttributes.DefaultConstructorConstraint); parameterDeclaration.HasConstructorConstraint = defaultConstructor && !structConstraint; return(parameterDeclaration); })); }
public void AddRange_Self() { CodeTypeParameterCollection coll = new CodeTypeParameterCollection(); coll.Add(new CodeTypeParameter()); Assert.AreEqual(1, coll.Count, "#1"); coll.AddRange(coll); Assert.AreEqual(2, coll.Count, "#2"); }
public void AddRange_Null_Collection() { CodeTypeParameterCollection coll = new CodeTypeParameterCollection(); coll.AddRange((CodeTypeParameterCollection)null); }