2015-02-03 00:15:54 +01:00
|
|
|
//// [optionalParamArgsTest.ts]
|
|
|
|
// Optional parameter and default argument tests
|
|
|
|
|
|
|
|
// Key:
|
|
|
|
// Cx - "Class x"
|
|
|
|
// My - "Method x"
|
|
|
|
// Az - "Argument z"
|
|
|
|
// E.g., C1M1A1 = "Class 1, Method 1, Argument 1"
|
|
|
|
|
|
|
|
interface I1 {
|
|
|
|
C1M1():number;
|
|
|
|
C1M2(C1M2A1:number):number;
|
|
|
|
C1M3(C1M3A1?:number,C1M3A2?:number):number;
|
|
|
|
C1M4(C1M4A1:number,C1M4A2?:number):number;
|
|
|
|
}
|
|
|
|
|
|
|
|
// test basic configurations
|
|
|
|
class C1 {
|
|
|
|
constructor(v: number = 1, p: number = 0) { }
|
|
|
|
public n:number = 0;
|
|
|
|
|
|
|
|
public C1M1() { return 0; } // returning C1M1A1 will result in "Unresolved symbol C1M1A1"
|
|
|
|
|
|
|
|
public C1M2(C1M2A1:number) { return C1M2A1; } // will return C1M1A2 without complaint
|
|
|
|
|
|
|
|
// C1M3 contains all optional parameters
|
|
|
|
public C1M3(C1M3A1:number=0,C1M3A2:number=C1M3A1) {return C1M3A1 + C1M3A2; }
|
|
|
|
|
|
|
|
// C1M4 contains a mix of optional and non-optional parameters
|
|
|
|
public C1M4(C1M4A1:number,C1M4A2?:number) { return C1M4A1 + C1M4A2; }
|
|
|
|
|
|
|
|
public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3?:number) { return C1M5A1 + C1M5A2; }
|
|
|
|
|
|
|
|
// Negative test
|
|
|
|
// "Optional parameters may only be followed by other optional parameters"
|
|
|
|
public C1M5(C1M5A1:number,C1M5A2:number=0,C1M5A3:number) { return C1M5A1 + C1M5A2; }
|
|
|
|
}
|
|
|
|
|
|
|
|
class C2 extends C1 {
|
|
|
|
constructor(v2: number = 6) {
|
|
|
|
super(v2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function F1() { return 0; }
|
|
|
|
function F2(F2A1:number) { return F2A1; }
|
|
|
|
function F3(F3A1=0,F3A2=F3A1) {return F3A1 + F3A2; }
|
|
|
|
function F4(F4A1:number,F4A2?:number) { return F4A1 + F4A2; }
|
|
|
|
|
|
|
|
var L1 = function() {return 0;}
|
|
|
|
var L2 = function (L2A1:number) { return L2A1; }
|
|
|
|
var L3 = function (L3A1=0,L3A2=L3A1) {return L3A1 + L3A2; }
|
|
|
|
var L4 = function (L4A1:number,L4A2?:number) { return L4A1 + L4A2; }
|
|
|
|
|
|
|
|
var c1o1:C1 = new C1(5);
|
|
|
|
var i1o1:I1 = new C1(5);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M1();
|
|
|
|
var f1v1=F1();
|
|
|
|
var l1v1=L1();
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M2(1);
|
|
|
|
i1o1.C1M2(1);
|
|
|
|
var f2v1=F2(1);
|
|
|
|
var l2v1=L2(1);
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3(1,2);
|
|
|
|
i1o1.C1M3(1,2);
|
|
|
|
var f3v1=F3(1,2);
|
|
|
|
var l3v1=L3(1,2);
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M4(1,2);
|
|
|
|
i1o1.C1M4(1,2);
|
|
|
|
var f4v1=F4(1,2);
|
|
|
|
var l4v1=L4(1,2);
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3(1);
|
|
|
|
i1o1.C1M3(1);
|
|
|
|
var f3v2=F3(1);
|
|
|
|
var l3v2=L3(1);
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3();
|
|
|
|
i1o1.C1M3();
|
|
|
|
var f3v3=F3();
|
|
|
|
var l3v3=L3();
|
|
|
|
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M4(1);
|
|
|
|
i1o1.C1M4(1);
|
|
|
|
var f4v2=F4(1);
|
|
|
|
var l4v2=L4(1);
|
|
|
|
|
|
|
|
// Negative tests - we expect these cases to fail
|
|
|
|
c1o1.C1M1(1);
|
|
|
|
i1o1.C1M1(1);
|
|
|
|
F1(1);
|
|
|
|
L1(1);
|
|
|
|
c1o1.C1M2();
|
|
|
|
i1o1.C1M2();
|
|
|
|
F2();
|
|
|
|
L2();
|
|
|
|
c1o1.C1M2(1,2);
|
|
|
|
i1o1.C1M2(1,2);
|
|
|
|
F2(1,2);
|
|
|
|
L2(1,2);
|
|
|
|
c1o1.C1M3(1,2,3);
|
|
|
|
i1o1.C1M3(1,2,3);
|
|
|
|
F3(1,2,3);
|
|
|
|
L3(1,2,3);
|
|
|
|
c1o1.C1M4();
|
|
|
|
i1o1.C1M4();
|
|
|
|
F4();
|
|
|
|
L4();
|
|
|
|
|
|
|
|
function fnOpt1(id: number, children: number[] = [], expectedPath: number[] = [], isRoot?: boolean): void {}
|
|
|
|
function fnOpt2(id: number, children?: number[], expectedPath?: number[], isRoot?: boolean): void {}
|
|
|
|
fnOpt1(1, [2, 3], [1], true);
|
|
|
|
fnOpt2(1, [2, 3], [1], true);
|
|
|
|
|
|
|
|
|
|
|
|
//// [optionalParamArgsTest.js]
|
|
|
|
// Optional parameter and default argument tests
|
|
|
|
var __extends = this.__extends || function (d, b) {
|
|
|
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
|
|
function __() { this.constructor = d; }
|
|
|
|
__.prototype = b.prototype;
|
|
|
|
d.prototype = new __();
|
|
|
|
};
|
|
|
|
// test basic configurations
|
|
|
|
var C1 = (function () {
|
|
|
|
function C1(v, p) {
|
|
|
|
if (v === void 0) { v = 1; }
|
|
|
|
if (p === void 0) { p = 0; }
|
|
|
|
this.n = 0;
|
|
|
|
}
|
2015-02-07 05:03:24 +01:00
|
|
|
C1.prototype.C1M1 = function () { return 0; }; // returning C1M1A1 will result in "Unresolved symbol C1M1A1"
|
|
|
|
C1.prototype.C1M2 = function (C1M2A1) { return C1M2A1; }; // will return C1M1A2 without complaint
|
2015-02-03 00:15:54 +01:00
|
|
|
// C1M3 contains all optional parameters
|
|
|
|
C1.prototype.C1M3 = function (C1M3A1, C1M3A2) {
|
|
|
|
if (C1M3A1 === void 0) { C1M3A1 = 0; }
|
|
|
|
if (C1M3A2 === void 0) { C1M3A2 = C1M3A1; }
|
|
|
|
return C1M3A1 + C1M3A2;
|
|
|
|
};
|
|
|
|
// C1M4 contains a mix of optional and non-optional parameters
|
2015-02-07 05:03:24 +01:00
|
|
|
C1.prototype.C1M4 = function (C1M4A1, C1M4A2) { return C1M4A1 + C1M4A2; };
|
2015-02-03 00:15:54 +01:00
|
|
|
C1.prototype.C1M5 = function (C1M5A1, C1M5A2, C1M5A3) {
|
|
|
|
if (C1M5A2 === void 0) { C1M5A2 = 0; }
|
|
|
|
return C1M5A1 + C1M5A2;
|
|
|
|
};
|
|
|
|
// Negative test
|
|
|
|
// "Optional parameters may only be followed by other optional parameters"
|
|
|
|
C1.prototype.C1M5 = function (C1M5A1, C1M5A2, C1M5A3) {
|
|
|
|
if (C1M5A2 === void 0) { C1M5A2 = 0; }
|
|
|
|
return C1M5A1 + C1M5A2;
|
|
|
|
};
|
|
|
|
return C1;
|
|
|
|
})();
|
|
|
|
var C2 = (function (_super) {
|
|
|
|
__extends(C2, _super);
|
|
|
|
function C2(v2) {
|
|
|
|
if (v2 === void 0) { v2 = 6; }
|
|
|
|
_super.call(this, v2);
|
|
|
|
}
|
|
|
|
return C2;
|
|
|
|
})(C1);
|
2015-02-07 05:03:24 +01:00
|
|
|
function F1() { return 0; }
|
|
|
|
function F2(F2A1) { return F2A1; }
|
2015-02-03 00:15:54 +01:00
|
|
|
function F3(F3A1, F3A2) {
|
|
|
|
if (F3A1 === void 0) { F3A1 = 0; }
|
|
|
|
if (F3A2 === void 0) { F3A2 = F3A1; }
|
|
|
|
return F3A1 + F3A2;
|
|
|
|
}
|
2015-02-07 05:03:24 +01:00
|
|
|
function F4(F4A1, F4A2) { return F4A1 + F4A2; }
|
|
|
|
var L1 = function () { return 0; };
|
|
|
|
var L2 = function (L2A1) { return L2A1; };
|
2015-02-03 00:15:54 +01:00
|
|
|
var L3 = function (L3A1, L3A2) {
|
|
|
|
if (L3A1 === void 0) { L3A1 = 0; }
|
|
|
|
if (L3A2 === void 0) { L3A2 = L3A1; }
|
|
|
|
return L3A1 + L3A2;
|
|
|
|
};
|
2015-02-07 05:03:24 +01:00
|
|
|
var L4 = function (L4A1, L4A2) { return L4A1 + L4A2; };
|
2015-02-03 00:15:54 +01:00
|
|
|
var c1o1 = new C1(5);
|
|
|
|
var i1o1 = new C1(5);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M1();
|
|
|
|
var f1v1 = F1();
|
|
|
|
var l1v1 = L1();
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M2(1);
|
|
|
|
i1o1.C1M2(1);
|
|
|
|
var f2v1 = F2(1);
|
|
|
|
var l2v1 = L2(1);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3(1, 2);
|
|
|
|
i1o1.C1M3(1, 2);
|
|
|
|
var f3v1 = F3(1, 2);
|
|
|
|
var l3v1 = L3(1, 2);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M4(1, 2);
|
|
|
|
i1o1.C1M4(1, 2);
|
|
|
|
var f4v1 = F4(1, 2);
|
|
|
|
var l4v1 = L4(1, 2);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3(1);
|
|
|
|
i1o1.C1M3(1);
|
|
|
|
var f3v2 = F3(1);
|
|
|
|
var l3v2 = L3(1);
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M3();
|
|
|
|
i1o1.C1M3();
|
|
|
|
var f3v3 = F3();
|
|
|
|
var l3v3 = L3();
|
|
|
|
// Valid
|
|
|
|
c1o1.C1M4(1);
|
|
|
|
i1o1.C1M4(1);
|
|
|
|
var f4v2 = F4(1);
|
|
|
|
var l4v2 = L4(1);
|
|
|
|
// Negative tests - we expect these cases to fail
|
|
|
|
c1o1.C1M1(1);
|
|
|
|
i1o1.C1M1(1);
|
|
|
|
F1(1);
|
|
|
|
L1(1);
|
|
|
|
c1o1.C1M2();
|
|
|
|
i1o1.C1M2();
|
|
|
|
F2();
|
|
|
|
L2();
|
|
|
|
c1o1.C1M2(1, 2);
|
|
|
|
i1o1.C1M2(1, 2);
|
|
|
|
F2(1, 2);
|
|
|
|
L2(1, 2);
|
|
|
|
c1o1.C1M3(1, 2, 3);
|
|
|
|
i1o1.C1M3(1, 2, 3);
|
|
|
|
F3(1, 2, 3);
|
|
|
|
L3(1, 2, 3);
|
|
|
|
c1o1.C1M4();
|
|
|
|
i1o1.C1M4();
|
|
|
|
F4();
|
|
|
|
L4();
|
2015-02-23 21:31:40 +01:00
|
|
|
function fnOpt1(id, children, expectedPath, isRoot) {
|
|
|
|
if (children === void 0) { children = []; }
|
|
|
|
if (expectedPath === void 0) { expectedPath = []; }
|
|
|
|
}
|
2015-02-07 03:45:09 +01:00
|
|
|
function fnOpt2(id, children, expectedPath, isRoot) { }
|
2015-02-03 00:15:54 +01:00
|
|
|
fnOpt1(1, [2, 3], [1], true);
|
|
|
|
fnOpt2(1, [2, 3], [1], true);
|