提交 3c5045a2 编写于 作者: M mahaifeng

[promise,global]去除文档中手动生成的代码,添加注释

上级 26658618
import { describe, test, expect, Result } from './tests.uts' import { describe, test, expect, Result } from './tests.uts'
export function testGlobal(): Result { export function testGlobal() : Result {
return describe("Global", () => { return describe("Global", () => {
test('setInterval', () => { test('setInterval', () => {
// #TEST Global.setInterval
// #ifdef APP-ANDROID // #ifdef APP-ANDROID
let aCount = 0 let aCount = 0
let taskId = setInterval(function(){ let taskId = setInterval(function () {
aCount += 1 aCount += 1
},0) }, 0)
setTimeout(function(){ setTimeout(function () {
console.log(aCount) console.log(aCount)
console.log(taskId) console.log(taskId)
clearInterval(taskId) clearInterval(taskId)
expect(aCount > 10).toEqual(true); expect(aCount > 10).toEqual(true);
},200) }, 200)
// #endif // #endif
// #END
}) })
test('btoa', () => { test('btoa', () => {
// #TEST Global.btoa
// #ifdef APP-ANDROID // #ifdef APP-ANDROID
expect(btoa("")).toEqual(''); expect(btoa("")).toEqual('');
expect(btoa("hello world")).toEqual('aGVsbG8gd29ybGQ='); expect(btoa("hello world")).toEqual('aGVsbG8gd29ybGQ=');
expect(btoa("@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM")).toEqual('QC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTUAtMTIzNDU2Nzg5MHF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5tLVFXRVJUWVVJT1BBU0RGR0hKS0xaWENWQk5NQC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTQ=='); expect(btoa("@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM")).toEqual('QC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTUAtMTIzNDU2Nzg5MHF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5tLVFXRVJUWVVJT1BBU0RGR0hKS0xaWENWQk5NQC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTQ==');
// #endif // #endif
// #END
}) })
test('atob', () => { test('atob', () => {
// #TEST Global.atob
// #ifdef APP-ANDROID // #ifdef APP-ANDROID
expect(atob("")).toEqual(''); expect(atob("")).toEqual('');
expect(atob('aGVsbG8gd29ybGQ=')).toEqual('hello world'); expect(atob('aGVsbG8gd29ybGQ=')).toEqual('hello world');
expect(atob("QC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTUAtMTIzNDU2Nzg5MHF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5tLVFXRVJUWVVJT1BBU0RGR0hKS0xaWENWQk5NQC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTQ==")).toEqual('@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM'); expect(atob("QC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTUAtMTIzNDU2Nzg5MHF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5tLVFXRVJUWVVJT1BBU0RGR0hKS0xaWENWQk5NQC0xMjM0NTY3ODkwcXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0tUVdFUlRZVUlPUEFTREZHSEpLTFpYQ1ZCTk1ALTEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubS1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTQ==")).toEqual('@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM@-1234567890qwertyuiopasdfghjklzxcvbnm-QWERTYUIOPASDFGHJKLZXCVBNM');
// #endif // #endif
// #END
}) })
test('parseInt', () => { test('parseInt', () => {
expect(parseInt("123.456")).toEqual(123); // #TEST Global.parseInt,Global.isNaN
expect(parseInt("123")).toEqual(123); expect(parseInt("123.456")).toEqual(123);
expect(parseInt("123", 10)).toEqual(123); expect(parseInt("123")).toEqual(123);
expect(parseInt(" 123", 10)).toEqual(123); expect(parseInt("123", 10)).toEqual(123);
expect(parseInt("077")).toEqual(77); expect(parseInt(" 123", 10)).toEqual(123);
expect(parseInt("1.9")).toEqual(1); expect(parseInt("077")).toEqual(77);
expect(parseInt("ff", 16)).toEqual(255); expect(parseInt("1.9")).toEqual(1);
expect(parseInt("0xFF", 0)).toEqual(255); expect(parseInt("ff", 16)).toEqual(255);
expect(parseInt("0xFF", 16)).toEqual(255); expect(parseInt("0xFF", 0)).toEqual(255);
expect(parseInt("0xFF")).toEqual(255); expect(parseInt("0xFF", 16)).toEqual(255);
expect(parseInt("0xFF", 10)).toEqual(0); expect(parseInt("0xFF")).toEqual(255);
expect(parseInt("0xF", 16)).toEqual(15); expect(parseInt("0xFF", 10)).toEqual(0);
expect(parseInt("F", 16)).toEqual(15); expect(parseInt("0xF", 16)).toEqual(15);
expect(parseInt("021", 8)).toEqual(17); expect(parseInt("F", 16)).toEqual(15);
expect(parseInt("015", 10)).toEqual(15); expect(parseInt("021", 8)).toEqual(17);
expect(parseInt("15,123", 10)).toEqual(15); expect(parseInt("015", 10)).toEqual(15);
expect(parseInt("FXX123.99", 16)).toEqual(15); expect(parseInt("15,123", 10)).toEqual(15);
expect(parseInt("1111", 2)).toEqual(15); expect(parseInt("FXX123.99", 16)).toEqual(15);
expect(parseInt("15 * 3", 10)).toEqual(15); expect(parseInt("1111", 2)).toEqual(15);
expect(parseInt("15e2", 10)).toEqual(15); expect(parseInt("15 * 3", 10)).toEqual(15);
expect(parseInt("15px", 10)).toEqual(15); expect(parseInt("15e2", 10)).toEqual(15);
expect(parseInt("12", 13)).toEqual(15); expect(parseInt("15px", 10)).toEqual(15);
expect(parseInt("17", 8)).toEqual(15); expect(parseInt("12", 13)).toEqual(15);
expect(isNaN(parseInt("a"))).toEqual(true) expect(parseInt("17", 8)).toEqual(15);
expect(parseInt("a", 16)).toEqual(10) expect(isNaN(parseInt("a"))).toEqual(true)
expect(isNaN(parseInt("345", 2))).toEqual(true) expect(parseInt("a", 16)).toEqual(10)
expect(isNaN(parseInt("hello"))).toEqual(true) expect(isNaN(parseInt("345", 2))).toEqual(true)
expect(parseInt("6.022e23")).toEqual(6) expect(isNaN(parseInt("hello"))).toEqual(true)
expect(parseInt("9223372036854775807")).toEqualNumber(9.223372036854778e+18) expect(parseInt("6.022e23")).toEqual(6)
expect(parseInt("9223372036854775807000")).toEqualNumber(9.223372036854777e+21) expect(parseInt("9223372036854775807")).toEqualNumber(9.223372036854778e+18)
expect(parseInt("922337203685477580700099999999999999999999999999999999999999999999999999999999999999999")).toEqualNumber(9.223372036854776e+86) expect(parseInt("9223372036854775807000")).toEqualNumber(9.223372036854777e+21)
expect(parseInt("50") / 100).toEqualNumber(0.5); expect(parseInt("922337203685477580700099999999999999999999999999999999999999999999999999999999999999999")).toEqualNumber(9.223372036854776e+86)
expect(parseInt("500") / 100).toEqualNumber(5); expect(parseInt("50") / 100).toEqualNumber(0.5);
expect(parseInt("500") / 100).toEqualNumber(5);
}) // #END
})
test('parseFloat', () => {
expect(parseFloat("11.20")).toEqual(11.2); test('parseFloat', () => {
expect(parseFloat("3.14")).toEqual(3.14); // #TEST Global.parseFloat
expect(parseFloat(" 3.14 ")).toEqual(3.14); expect(parseFloat("11.20")).toEqual(11.2);
expect(parseFloat("314e-2")).toEqual(3.14); expect(parseFloat("3.14")).toEqual(3.14);
expect(parseFloat("0.0314E+2")).toEqual(3.14); expect(parseFloat(" 3.14 ")).toEqual(3.14);
expect(parseFloat("3.14some non-digit characters")).toEqual(3.14); expect(parseFloat("314e-2")).toEqual(3.14);
expect(parseFloat("100") / 50).toEqualNumber(2); expect(parseFloat("0.0314E+2")).toEqual(3.14);
expect(parseFloat("105") / 50).toEqual(2.1); expect(parseFloat("3.14some non-digit characters")).toEqual(3.14);
}) expect(parseFloat("100") / 50).toEqualNumber(2);
expect(parseFloat("105") / 50).toEqual(2.1);
test('encodeURI', () => { // #END
expect(encodeURI("你好")).toEqual('%E4%BD%A0%E5%A5%BD')
expect(encodeURI("你好+22")).toEqual('%E4%BD%A0%E5%A5%BD+22')
expect(encodeURI("你;/=好+22")).toEqual('%E4%BD%A0;/=%E5%A5%BD+22')
expect(encodeURI("https://demo.dcloud.net.cn/mock/最新/12")).toEqual('https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12')
})
test('decodeURI', () => {
expect(decodeURI('%E4%BD%A0%E5%A5%BD')).toEqual('你好')
expect(decodeURI("%E4%BD%A0%E5%A5%BD+22")).toEqual('你好+22')
expect(decodeURI("%E4%BD%A0;/=%E5%A5%BD+22")).toEqual('你;/=好+22')
expect(decodeURI("https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12")).toEqual('https://demo.dcloud.net.cn/mock/最新/12')
})
test('encodeURIComponent', () => {
expect(encodeURIComponent("你好")).toEqual('%E4%BD%A0%E5%A5%BD')
expect(encodeURIComponent("你好+22")).toEqual('%E4%BD%A0%E5%A5%BD%2B22')
expect(encodeURIComponent("你;/=好+22")).toEqual('%E4%BD%A0%3B%2F%3D%E5%A5%BD%2B22')
expect(encodeURIComponent("https://demo.dcloud.net.cn/mock/最新/12")).toEqual('https%3A%2F%2Fdemo.dcloud.net.cn%2Fmock%2F%E6%9C%80%E6%96%B0%2F12')
})
test('decodeURIComponent', () => {
expect(decodeURIComponent('%E4%BD%A0%E5%A5%BD')).toEqual('你好')
expect(decodeURIComponent('%E4%BD%A0%E5%A5%BD%2B22')).toEqual('你好+22')
expect(decodeURIComponent('%E4%BD%A0%3B%2F%3D%E5%A5%BD%2B22')).toEqual('你;/=好+22')
expect(decodeURIComponent("https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12")).toEqual('https://demo.dcloud.net.cn/mock/最新/12')
})
}) })
}
test('encodeURI', () => {
// #TEST Global.encodeURI
expect(encodeURI("你好")).toEqual('%E4%BD%A0%E5%A5%BD')
expect(encodeURI("你好+22")).toEqual('%E4%BD%A0%E5%A5%BD+22')
expect(encodeURI("你;/=好+22")).toEqual('%E4%BD%A0;/=%E5%A5%BD+22')
expect(encodeURI("https://demo.dcloud.net.cn/mock/最新/12")).toEqual('https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12')
// #END
})
test('decodeURI', () => {
// #TEST Global.decodeURI
expect(decodeURI('%E4%BD%A0%E5%A5%BD')).toEqual('你好')
expect(decodeURI("%E4%BD%A0%E5%A5%BD+22")).toEqual('你好+22')
expect(decodeURI("%E4%BD%A0;/=%E5%A5%BD+22")).toEqual('你;/=好+22')
expect(decodeURI("https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12")).toEqual('https://demo.dcloud.net.cn/mock/最新/12')
// #END
})
test('encodeURIComponent', () => {
// #TEST Global.encodeURIComponent
expect(encodeURIComponent("你好")).toEqual('%E4%BD%A0%E5%A5%BD')
expect(encodeURIComponent("你好+22")).toEqual('%E4%BD%A0%E5%A5%BD%2B22')
expect(encodeURIComponent("你;/=好+22")).toEqual('%E4%BD%A0%3B%2F%3D%E5%A5%BD%2B22')
expect(encodeURIComponent("https://demo.dcloud.net.cn/mock/最新/12")).toEqual('https%3A%2F%2Fdemo.dcloud.net.cn%2Fmock%2F%E6%9C%80%E6%96%B0%2F12')
// #END
})
test('decodeURIComponent', () => {
// #TEST Global.decodeURIComponent
expect(decodeURIComponent('%E4%BD%A0%E5%A5%BD')).toEqual('你好')
expect(decodeURIComponent('%E4%BD%A0%E5%A5%BD%2B22')).toEqual('你好+22')
expect(decodeURIComponent('%E4%BD%A0%3B%2F%3D%E5%A5%BD%2B22')).toEqual('你;/=好+22')
expect(decodeURIComponent("https://demo.dcloud.net.cn/mock/%E6%9C%80%E6%96%B0/12")).toEqual('https://demo.dcloud.net.cn/mock/最新/12')
// #END
})
})
}
\ No newline at end of file
import { describe, test, expect, Result } from './tests.uts' import { describe, test, expect, Result } from './tests.uts'
export function testPromise(): Result { export function testPromise() : Result {
return describe("Promise", () => { return describe("Promise", () => {
test('constructor', () => { test('constructor', () => {
// 常规方式 // #TEST Promise.Constructor,Promise.Constructor_1
let p = new Promise<number>((resolve, reject) => { // 常规方式
let success = true; let p = new Promise<number>((resolve, reject) => {
setTimeout(()=>{ let success = true;
if (success) { setTimeout(() => {
resolve(2024) if (success) {
} else{ resolve(2024)
let error = new Error("something going wrong") } else {
reject(error) let error = new Error("something going wrong")
} reject(error)
}, 10); }
}); }, 10);
p.then((res: number) => { });
expect(res).toEqual(2024) p.then((res : number) => {
}) expect(res).toEqual(2024)
})
// 单个函数
let p1 = new Promise<any | null>((resolve: (value: any | null) => void) => { // 单个函数
setTimeout(function() { let p1 = new Promise<any | null>((resolve : (value : any | null) => void) => {
resolve(null) setTimeout(function () {
}, 10); resolve(null)
}) }, 10);
p1.then((res: any | null) => { })
expect(res).toEqual(null) p1.then((res : any | null) => {
}) expect(res).toEqual(null)
})
// 指定函数类型
let p2 = new Promise((resolve: (value: string) => void, reject: (error: any | null) => void) => { // 指定函数类型
setTimeout(function() { let p2 = new Promise((resolve : (value : string) => void, reject : (error : any | null) => void) => {
reject(null) setTimeout(function () {
}, 10); reject(null)
}) }, 10);
p2.then() })
.catch((error: any | null) => { p2.then()
expect(error).toEqual(null) .catch((error : any | null) => {
}) expect(error).toEqual(null)
}) })
// #END
test('then', () => { })
let p = new Promise<string>((reslove, reject) => {
setTimeout(function() { test('then', () => {
reslove("hello world") // #TEST Promise.then,Promise.then_1,Promise.then_2,Promise.then_3,Promise.then_4
}, 13); let p = new Promise<string>((reslove, reject) => {
}) setTimeout(function () {
reslove("hello world")
p.then( }, 13);
(res: string): Promise<string> => { })
expect(res).toEqual("hello world")
let p0 = new Promise<string>((reslove,reject) => { p.then(
var success = true; (res : string) : Promise<string> => {
setTimeout(function() { expect(res).toEqual("hello world")
success = true; let p0 = new Promise<string>((reslove, reject) => {
if (success) { var success = true;
reslove(res + " 2024") setTimeout(function () {
} else{ success = true;
reject("first then p0 reject message") if (success) {
} reslove(res + " 2024")
}, 8); } else {
}) reject("first then p0 reject message")
return p0; }
}, }, 8);
(err: any | null): void => { })
throw new Error("first then throw error") return p0;
} },
) (err : any | null) : void => {
.catch( throw new Error("first then throw error")
(err):string => { }
return "first catch return message" )
} .catch(
) (err) : string => {
.then( return "first catch return message"
(res) => { }
console.log(res) )
expect(res).toEqual("hello world 2024") .then(
} (res) => {
) expect(res).toEqual("hello world 2024")
.catch( }
(err) => { )
console.log(err, "this is seconded catch") .catch(
} (err) => {
) console.log(err, "this is seconded catch")
.finally(() => { }
console.log("finally") )
expect("finally").toEqual("finally") .finally(() => {
}) expect("finally").toEqual("finally")
}) })
// #END
test('catch', () => { })
let p = Promise.reject()
p.then() test('catch', () => {
.catch((res: any | null) => { // #TEST Promise.catch,Promise.catch_1,Promise.catch_2,Promise.catch_3,Promise.catch_4
expect(res).toEqual(null)
}) let p = Promise.reject()
p.then()
// catch 指定返回值 .catch((res : any | null) => {
new Promise<string>((resolve, reject) => { expect(res).toEqual(null)
setTimeout(() => {
reject("2024")
}, 12)
})
.then()
.catch((res: any | null): string => {
expect(res!).toEqual("2024")
return "hello world"
})
.then((res) => {
expect(res).toEqual("hello world")
})
// catch 返回Promise
new Promise<string>((resolve, reject) => {
setTimeout(() => {
reject("2024")
}, 12)
})
.then()
.catch((res: any | null): Promise<number> => {
expect(res!).toEqual("2024")
let p = new Promise<number>((resolve, reject) => {
resolve(1)
})
return p
})
.then((res) => {
expect(res).toEqual(1)
})
}) })
test('finally', () => { // catch 指定返回值
Promise.resolve(2) new Promise<string>((resolve, reject) => {
.finally(() => { setTimeout(() => {
console.log("finally") reject("2024")
}) }, 12)
.then((res) => { })
expect(res).toEqual(2) .then()
}) .catch((res : any | null) : string => {
expect(res!).toEqual("2024")
Promise.reject(3) return "hello world"
.finally(() => {
console.log("finally")
})
.catch((res) => {
expect(res).toEqual(3)
})
Promise.resolve(2)
.finally((): number => {
console.log("finally")
return 88
})
.then((res) => {
expect(res).toEqual(2)
})
Promise.reject(3).finally(() => {
throw new Error("99")
})
.catch((res) => {
expect((res as Error).message).toEqual("99");
})
console.log("start");
Promise.reject(4).finally((): Promise<number> => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(20)
}, 1000)
})
})
.catch((res) => {
expect(res).toEqual(4)
})
}) })
.then((res) => {
test('resolve', () => { expect(res).toEqual("hello world")
// resolve array
Promise.resolve([1,2,3])
.then((res) => {
expect(res).toEqual([1,2,3])
})
// resolve string
Promise.resolve("成功")
.then((res) => {
expect(res).toEqual("成功");
})
// resolve null
Promise.resolve()
.then((res) => {
// expect(res).toEqual(null);
})
// resolve promise
const original = Promise.resolve(33)
const cast = Promise.resolve(original)
cast.then((res) => {
expect(res).toEqual(33);
})
// 注:此处飘红是编译器误报,实际可以判等
expect(original === cast).toEqual(true)
}) })
test('reject', () => { // catch 返回Promise
// reject array new Promise<string>((resolve, reject) => {
Promise.reject([1,2,3]) setTimeout(() => {
.catch((err) => { reject("2024")
expect(err).toEqual([1,2,3]) }, 12)
}) })
.then()
// reject error .catch((res : any | null) : Promise<number> => {
Promise.reject(new Error("this is reject error message")) expect(res!).toEqual("2024")
.catch((err) => { let p = new Promise<number>((resolve, reject) => {
expect((err as Error).message).toEqual("this is reject error message"); resolve(1)
})
// reject null
Promise.reject()
.catch((err) => {
expect(err).toEqual(null);
})
// reject promise
const original = Promise.reject(33)
const cast = Promise.reject(original)
cast.catch((err) => {
expect((err as Promise<any>) === original).toEqual(true);
}) })
expect(original === cast).toEqual(false) return p
}) })
.then((res) => {
test('all', () => { expect(res).toEqual(1)
let p0 = new Promise<string>((resolve, reject) => {
setTimeout(function() {
resolve("1");
}, 10);
})
let p1 = new Promise<string>((resolve, reject) => {
setTimeout(function() {
resolve("2");
}, 10);
})
let p2 = new Promise<string>((resolve, reject) => {
setTimeout(function() {
resolve("3");
}, 10);
})
let p3 = new Promise<string>((resolve, reject) => {
setTimeout(function() {
let error = new Error("p3 reject reason")
reject(error);
}, 10);
})
// resolve
Promise.all([p0, p1, p2])
.then((res) => {
console.log(res);
expect(res).toEqual(["1", "2", "3"])
})
// reject
Promise.all([p1, p2, p3])
.then()
.catch((error) => {
console.log(error);
expect((error as Error).message).toEqual("p3 reject reason");
})
}) })
// #END
test('allSettled', () => { })
let p0 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() { test('finally', () => {
resolve("1"); // #TEST Promise.finally
}, 10);
}) Promise.resolve(2)
.finally(() => {
let p1 = new Promise<string | null>((resolve, reject) => { console.log("finally")
setTimeout(function() {
resolve(null);
}, 10);
})
let p2 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
reject(null)
}, 10);
})
let p3 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
let error = new Error("p3 reject reason")
reject(error);
}, 10);
})
Promise.allSettled([p0, p1, p2, p3])
.then((res) => {
console.log(res);
let statusArr : string[] = []
res.forEach((item, index: number) => {
statusArr.add(item.status)
})
expect(statusArr).toEqual(["fulfilled", "fulfilled", "rejected", "rejected"])
})
}) })
.then((res) => {
test('any', () => { expect(res).toEqual(2)
let p0 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
resolve("1");
}, 10);
})
let p1 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
resolve(null);
}, 15);
})
let p2 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
reject(null)
}, 10);
})
let p3 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() {
reject("error");
}, 12);
})
// test for resolve
Promise.any([p0, p1, p2])
.then((res) => {
console.log(res)
expect(res).toEqual("1");
})
// test for reject
Promise.any([p2, p3])
.then()
.catch(
(error: any | null) => {
console.log("test for promise.any error ==> ", error);
// #ifdef APP-IOS
expect((error as UTSPromiseAggregateError).name).toEqual("AggregateError");
expect((error as UTSPromiseAggregateError).message).toEqual("All promises were rejected");
expect((error as UTSPromiseAggregateError).errors).toEqual([null, "error"]);
// #endif
// #ifdef APP-ANDROID
expect((error as UTSPromiseAggregateError).name).toEqual("AggregateError");
expect((error as UTSPromiseAggregateError).message).toEqual("All promises were rejected");
expect((error as UTSPromiseAggregateError).errors).toEqual([null, "error"]);
// #endif
})
}) })
test('race', () => { Promise.reject(3)
let p0 = new Promise<string | null>((resolve, reject) => { .finally(() => {
setTimeout(function() { console.log("finally")
resolve("fast"); })
}, 10); .catch((res) => {
}) expect(res).toEqual(3)
})
let p1 = new Promise<string | null>((resolve, reject) => {
setTimeout(function() { Promise.resolve(2)
resolve("slow"); .finally(() : number => {
}, 15); console.log("finally")
}) return 88
})
let p2 = new Promise<string | null>((resolve, reject) => { .then((res) => {
setTimeout(function() { expect(res).toEqual(2)
reject(null) })
}, 12);
}) Promise.reject(3).finally(() => {
throw new Error("99")
// test for resolve })
Promise.race([p0, p1]) .catch((res) => {
.then((res) => { expect((res as Error).message).toEqual("99");
console.log("test for race resolve ===> ", res); })
expect(res).toEqual("fast");
console.log("start");
Promise.reject(4).finally(() : Promise<number> => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(20)
}, 1000)
})
})
.catch((res) => {
expect(res).toEqual(4)
})
// #END
})
test('resolve', () => {
// #TEST Promise.resolve,Promise.resolve_1,Promise.resolve_2
// resolve array
Promise.resolve([1, 2, 3])
.then((res) => {
expect(res).toEqual([1, 2, 3])
})
// resolve string
Promise.resolve("成功")
.then((res) => {
expect(res).toEqual("成功");
})
// resolve null
Promise.resolve()
.then((res) => {
// expect(res).toEqual(null);
})
// resolve promise
const original = Promise.resolve(33)
const cast = Promise.resolve(original)
cast.then((res) => {
expect(res).toEqual(33);
})
// 注:此处飘红是编译器误报,实际可以判等
expect(original === cast).toEqual(true)
// #END
})
test('reject', () => {
// #TEST Promise.reject
// reject array
Promise.reject([1, 2, 3])
.catch((err) => {
expect(err).toEqual([1, 2, 3])
})
// reject error
Promise.reject(new Error("this is reject error message"))
.catch((err) => {
expect((err as Error).message).toEqual("this is reject error message");
})
// reject null
Promise.reject()
.catch((err) => {
expect(err).toEqual(null);
})
// reject promise
const original = Promise.reject(33)
const cast = Promise.reject(original)
cast.catch((err) => {
expect((err as Promise<any>) === original).toEqual(true);
})
expect(original === cast).toEqual(false)
// #END
})
test('all', () => {
// #TEST Promise.all
let p0 = new Promise<string>((resolve, reject) => {
setTimeout(function () {
resolve("1");
}, 10);
})
let p1 = new Promise<string>((resolve, reject) => {
setTimeout(function () {
resolve("2");
}, 10);
})
let p2 = new Promise<string>((resolve, reject) => {
setTimeout(function () {
resolve("3");
}, 10);
})
let p3 = new Promise<string>((resolve, reject) => {
setTimeout(function () {
let error = new Error("p3 reject reason")
reject(error);
}, 10);
})
// resolve
Promise.all([p0, p1, p2])
.then((res) => {
expect(res).toEqual(["1", "2", "3"])
})
// reject
Promise.all([p1, p2, p3])
.then()
.catch((error) => {
console.log(error);
expect((error as Error).message).toEqual("p3 reject reason");
})
// #END
})
test('allSettled', () => {
// #TEST Promise.allSettled
let p0 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve("1");
}, 10);
})
let p1 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve(null);
}, 10);
})
let p2 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
reject(null)
}, 10);
})
let p3 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
let error = new Error("p3 reject reason")
reject(error);
}, 10);
})
Promise.allSettled([p0, p1, p2, p3])
.then((res) => {
console.log(res);
let statusArr : string[] = []
res.forEach((item, index : number) => {
statusArr.add(item.status)
}) })
expect(statusArr).toEqual(["fulfilled", "fulfilled", "rejected", "rejected"])
// test for reject })
Promise.race([p1, p2]) // #END
.then() })
.catch((error) => {
console.log("test for race reject ===> ", error); test('any', () => {
expect(error).toEqual(null); // #TEST Promise.any
let p0 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve("1");
}, 10);
})
let p1 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve(null);
}, 15);
})
let p2 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
reject(null)
}, 10);
})
let p3 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
reject("error");
}, 12);
})
// test for resolve
Promise.any([p0, p1, p2])
.then((res) => {
console.log(res)
expect(res).toEqual("1");
})
// test for reject
Promise.any([p2, p3])
.then()
.catch(
(error : any | null) => {
console.log("test for promise.any error ==> ", error);
// #ifdef APP-IOS
expect((error as UTSPromiseAggregateError).name).toEqual("AggregateError");
expect((error as UTSPromiseAggregateError).message).toEqual("All promises were rejected");
expect((error as UTSPromiseAggregateError).errors).toEqual([null, "error"]);
// #endif
// #ifdef APP-ANDROID
expect((error as UTSPromiseAggregateError).name).toEqual("AggregateError");
expect((error as UTSPromiseAggregateError).message).toEqual("All promises were rejected");
expect((error as UTSPromiseAggregateError).errors).toEqual([null, "error"]);
// #endif
}) })
// #END
})
test('race', () => {
// #TEST Promise.race
let p0 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve("fast");
}, 10);
})
let p1 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
resolve("slow");
}, 15);
})
let p2 = new Promise<string | null>((resolve, reject) => {
setTimeout(function () {
reject(null)
}, 12);
})
// test for resolve
Promise.race([p0, p1])
.then((res) => {
console.log("test for race resolve ===> ", res);
expect(res).toEqual("fast");
})
// test for reject
Promise.race([p1, p2])
.then()
.catch((error) => {
console.log("test for race reject ===> ", error);
expect(error).toEqual(null);
}) })
// #END
}) })
} })
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册