namerena-work/branch/latest/test.ts
2024-08-14 18:39:44 +08:00

95 lines
2.8 KiB
TypeScript

// 请使用 bun 运行
import { fight, score, win_rate } from "./md5-api";
const test_profiles = {
fight: [
{
test: `vy5we
w\n ryyb\nb\nrv\nv\netet4y 54 w\ne rg\nwe by\nrw \nte\nw \nnbyrb\n ew\nyn re\nryb\ney w\nneb r\nbwe\nn yrbq34nb\net\nab\nqbetq\n45ywy54\ny45\n45\nwv54\nyw\nvy\n5y\nvyev\nyeevy\nvey\ne\nrye\nyn\n43n\n63\nub63 u\nb6r\nun\n3br\nue\nrnbt\n4n\n5b\nwu\n4bw\n4nw\n4u \nn6w\nr`, winner: "rye"
},
{
test: 'm@fAIgFUL\n1 1 @Ehlt s',
winner: "m@fAIgFUL"
},
],
win_chance: [
{
test: `
!test!
http://shenjack.top:81/md5/branch/latest/
http://shenjack.top:81/md5`,
round_10: 0.513,
round_100: 0.5106,
},
],
score: [
{
test: `
!test!
http://shenjack.top:81/md5/branch/latest/`,
round_10: 1480,
round_100: 1903, // todo
},
],
};
async function test() {
for (const profile of test_profiles.fight) {
const result = await fight(profile.test);
if (result.source_plr === profile.winner) {
console.log("pass");
} else {
throw new Error(`fail${result.source_plr} ${profile.winner} ${profile.test}`);
}
}
for (const profile of test_profiles.win_chance) {
console.log(profile.test);
const result = await win_rate(profile.test, 100 * 100);
// 分别校验 10 * 100 和 100 * 100 轮的胜率
for (const data of result.raw_data) {
if (data.round === 10 * 100) {
const rate = data.win_count / data.round;
if (rate === profile.round_10) {
console.log("pass");
} else {
throw new Error(`fail${rate} ${profile.round_10}`);
}
} else if (data.round === 100 * 100) {
const rate = data.win_count / data.round;
if (rate === profile.round_100) {
console.log("pass");
} else {
throw new Error(`fail${rate} ${profile.round_100}`);
}
}
}
}
for (const profile of test_profiles.score) {
console.log(profile.test);
const result = await score(profile.test, 100 * 100);
for (const data of result.raw_data) {
if (data.round === 10 * 100) {
if (data.score * 10 === profile.round_10) {
console.log("pass");
} else {
throw new Error(`fail${data.score} ${profile.round_10}`);
}
} else if (data.round === 100 * 100) {
if (data.score === profile.round_100) {
console.log("pass");
} else {
throw new Error(`fail${data.score} ${profile.round_100}`);
}
}
}
}
}
test();