Add object spread scenario tests

This commit is contained in:
Nathan Shively-Sanders
2016-09-27 16:17:14 -07:00
parent 7e7a26a358
commit 0f773c5673
4 changed files with 252 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
//// [objectSpreadScenarios.ts]
interface A1 { a: boolean }
interface B1 { b: number };
function override<U>(initial: U, override: U): U {
return { ...initial, ...override };
}
function update<U>(this: { u: U }, override: U): void {
this.u = { ...this.u, ...override };
}
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
return { ...one, ...two };
}
let a1: A1 = { a: true };
let b1: B1 = { b: 101 };
a1 = override(a1, { a: false });
let host = { u: a1, update };
host.update({ a: false });
let mixed = mixin(a1, b1);
//// [objectSpreadScenarios.js]
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
;
function override(initial, override) {
return __assign({}, initial, override);
}
function update(override) {
this.u = __assign({}, this.u, override);
}
function mixin(one, two) {
return __assign({}, one, two);
}
var a1 = { a: true };
var b1 = { b: 101 };
a1 = override(a1, { a: false });
var host = { u: a1, update: update };
host.update({ a: false });
var mixed = mixin(a1, b1);

View File

@@ -0,0 +1,84 @@
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
interface A1 { a: boolean }
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
>a : Symbol(A1.a, Decl(objectSpreadScenarios.ts, 0, 14))
interface B1 { b: number };
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
>b : Symbol(B1.b, Decl(objectSpreadScenarios.ts, 1, 14))
function override<U>(initial: U, override: U): U {
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>initial : Symbol(initial, Decl(objectSpreadScenarios.ts, 2, 21))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 2, 32))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
return { ...initial, ...override };
}
function update<U>(this: { u: U }, override: U): void {
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 4, 1))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 5, 34))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
this.u = { ...this.u, ...override };
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
}
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
>one : Symbol(one, Decl(objectSpreadScenarios.ts, 8, 21))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>two : Symbol(two, Decl(objectSpreadScenarios.ts, 8, 28))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
return { ...one, ...two };
}
let a1: A1 = { a: true };
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 11, 14))
let b1: B1 = { b: 101 };
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
>b : Symbol(b, Decl(objectSpreadScenarios.ts, 12, 14))
a1 = override(a1, { a: false });
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 13, 19))
let host = { u: a1, update };
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 14, 12))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
host.update({ a: false });
>host.update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 15, 13))
let mixed = mixin(a1, b1);
>mixed : Symbol(mixed, Decl(objectSpreadScenarios.ts, 16, 3))
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))

View File

@@ -0,0 +1,106 @@
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
interface A1 { a: boolean }
>A1 : A1
>a : boolean
interface B1 { b: number };
>B1 : B1
>b : number
function override<U>(initial: U, override: U): U {
>override : <U>(initial: U, override: U) => U
>U : U
>initial : U
>U : U
>override : U
>U : U
>U : U
return { ...initial, ...override };
>{ ...initial, ...override } : { ...U; ...U }
>initial : any
>override : any
}
function update<U>(this: { u: U }, override: U): void {
>update : <U>(this: { u: U; }, override: U) => void
>U : U
>this : { u: U; }
>u : U
>U : U
>override : U
>U : U
this.u = { ...this.u, ...override };
>this.u = { ...this.u, ...override } : { ...U; ...U }
>this.u : U
>this : { u: U; }
>u : U
>{ ...this.u, ...override } : { ...U; ...U }
>this.u : U
>this : { u: U; }
>u : U
>override : any
}
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
>T : T
>U : U
>one : T
>T : T
>two : U
>U : U
>T : T
>U : U
return { ...one, ...two };
>{ ...one, ...two } : { ...T; ...U }
>one : any
>two : any
}
let a1: A1 = { a: true };
>a1 : A1
>A1 : A1
>{ a: true } : { a: true; }
>a : boolean
>true : true
let b1: B1 = { b: 101 };
>b1 : B1
>B1 : B1
>{ b: 101 } : { b: number; }
>b : number
>101 : 101
a1 = override(a1, { a: false });
>a1 = override(a1, { a: false }) : A1
>a1 : A1
>override(a1, { a: false }) : A1
>override : <U>(initial: U, override: U) => U
>a1 : A1
>{ a: false } : { a: false; }
>a : boolean
>false : false
let host = { u: a1, update };
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
>{ u: a1, update } : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
>u : A1
>a1 : A1
>update : <U>(this: { u: U; }, override: U) => void
host.update({ a: false });
>host.update({ a: false }) : void
>host.update : <U>(this: { u: U; }, override: U) => void
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
>update : <U>(this: { u: U; }, override: U) => void
>{ a: false } : { a: false; }
>a : boolean
>false : false
let mixed = mixin(a1, b1);
>mixed : { ...A1; ...B1 }
>mixin(a1, b1) : { ...A1; ...B1 }
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
>a1 : A1
>b1 : B1

View File

@@ -0,0 +1,17 @@
interface A1 { a: boolean }
interface B1 { b: number };
function override<U>(initial: U, override: U): U {
return { ...initial, ...override };
}
function update<U>(this: { u: U }, override: U): void {
this.u = { ...this.u, ...override };
}
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
return { ...one, ...two };
}
let a1: A1 = { a: true };
let b1: B1 = { b: 101 };
a1 = override(a1, { a: false });
let host = { u: a1, update };
host.update({ a: false });
let mixed = mixin(a1, b1);