public void TestOverloadResolution() { OverloadTestExpressionOwner owner = new OverloadTestExpressionOwner(); ExpressionContext context = new ExpressionContext(null, owner); // Test value types this.DoTestOverloadResolution("valuetype1(100)", context, 1); this.DoTestOverloadResolution("valuetype1(100.0f)", context, 2); this.DoTestOverloadResolution("valuetype1(100.0)", context, 3); this.DoTestOverloadResolution("valuetype2(100)", context, 1); // Test value type -> reference type this.DoTestOverloadResolution("Value_ReferenceType1(100)", context, 1); this.DoTestOverloadResolution("Value_ReferenceType2(100)", context, 1); // with interfaces this.DoTestOverloadResolution("Value_ReferenceType3(100)", context, 1); // Test reference types this.DoTestOverloadResolution("ReferenceType1(\"abc\")", context, 2); this.DoTestOverloadResolution("ReferenceType1(b)", context, 1); this.DoTestOverloadResolution("ReferenceType2(a)", context, 2); // with interfaces this.DoTestOverloadResolution("ReferenceType3(\"abc\")", context, 2); // Test nulls this.DoTestOverloadResolution("ReferenceType1(null)", context, 2); this.DoTestOverloadResolution("ReferenceType2(null)", context, 2); // Test ambiguous match this.DoTestOverloadResolution("valuetype3(100)", context, -1); this.DoTestOverloadResolution("Value_ReferenceType4(100)", context, -1); this.DoTestOverloadResolution("ReferenceType4(\"abc\")", context, -1); this.DoTestOverloadResolution("ReferenceType4(null)", context, -1); // Test access control this.DoTestOverloadResolution("Access1(\"abc\")", context, 1); this.DoTestOverloadResolution("Access2(\"abc\")", context, -1); this.DoTestOverloadResolution("Access2(null)", context, -1); // Test with multiple arguments this.DoTestOverloadResolution("Multiple1(1.0f, 2.0)", context, 1); this.DoTestOverloadResolution("Multiple1(100, 2.0)", context, 2); this.DoTestOverloadResolution("Multiple1(100, 2.0f)", context, 2); }
public void TestOverloadResolution() { OverloadTestExpressionOwner owner = new OverloadTestExpressionOwner(); ExpressionContext context = new ExpressionContext(null, owner); // Test value types this.DoTestOverloadResolution("valuetype1(100)", context, 1); this.DoTestOverloadResolution("valuetype1(100.0f)", context, 2); this.DoTestOverloadResolution("valuetype1(100.0)", context, 3); this.DoTestOverloadResolution("valuetype2(100)", context, 1); // Test value type -> reference type this.DoTestOverloadResolution("Value_ReferenceType1(100)", context, 1); this.DoTestOverloadResolution("Value_ReferenceType2(100)", context, 1); // with interfaces this.DoTestOverloadResolution("Value_ReferenceType3(100)", context, 1); // Test reference types this.DoTestOverloadResolution("ReferenceType1(\"abc\")", context, 2); this.DoTestOverloadResolution("ReferenceType1(b)", context, 1); this.DoTestOverloadResolution("ReferenceType2(a)", context, 2); // with interfaces this.DoTestOverloadResolution("ReferenceType3(\"abc\")", context, 2); // Test nulls this.DoTestOverloadResolution("ReferenceType1(null)", context, 2); this.DoTestOverloadResolution("ReferenceType2(null)", context, 2); // Test ambiguous match this.DoTestOverloadResolution("valuetype3(100)", context, -1); this.DoTestOverloadResolution("Value_ReferenceType4(100)", context, -1); this.DoTestOverloadResolution("ReferenceType4(\"abc\")", context, -1); this.DoTestOverloadResolution("ReferenceType4(null)", context, -1); // Test access control this.DoTestOverloadResolution("Access1(\"abc\")", context, 1); this.DoTestOverloadResolution("Access2(\"abc\")", context, -1); this.DoTestOverloadResolution("Access2(null)", context, -1); // Test with multiple arguments this.DoTestOverloadResolution("Multiple1(1.0f, 2.0)", context, 1); this.DoTestOverloadResolution("Multiple1(100, 2.0)", context, 2); this.DoTestOverloadResolution("Multiple1(100, 2.0f)", context, 2); }