221 lines
7.3 KiB
TypeScript
221 lines
7.3 KiB
TypeScript
import { Client } from './Client';
|
||
import 'mocha';
|
||
import { PinusWSClient } from 'pinus-robot-plugin';
|
||
import { expect } from 'chai';
|
||
import { checkSuccessResponse, checkDisplayItems, checkHero, addItem } from './CheckPatten';
|
||
import { GACHA_TYPE } from '../../shared/consts';
|
||
|
||
describe.skip('抽卡概率测试', function () {
|
||
let pinusClient: PinusWSClient;
|
||
let roleInfo;
|
||
let arr: number[] = [];
|
||
|
||
|
||
before(function (done) {
|
||
const c = new Client();
|
||
const timer = setInterval(() => {
|
||
if (c.client) {
|
||
pinusClient = c.client;
|
||
roleInfo = c.roleInfo;
|
||
clearInterval(timer);
|
||
done();
|
||
}
|
||
for(let i = 0; i < 10000; i++) arr.push(i)
|
||
}, 500);
|
||
});
|
||
|
||
after(function (done) {
|
||
// pinusClient.disconnect();
|
||
// disconnect 后等待 500ms,供服务器清理环境、退出频道等
|
||
setTimeout(() => {
|
||
done();
|
||
}, 500);
|
||
});
|
||
|
||
it('抽卡准备', function (done) {
|
||
pinusClient.request('role.heroHandler.addItem', { id: 22003, count: 100000000 }, (res) => {
|
||
pinusClient.request('activity.gachaHandler.setPickHero', { gachaId: 8, activityId: 182, pickHero: 66 }, (res) => {
|
||
done()
|
||
});
|
||
});
|
||
|
||
});
|
||
|
||
it(`dummy`, function(done) {
|
||
describe('500抽', function() {
|
||
arr.forEach(function(d, index) {
|
||
it(`500抽 ${index}`, function(_done) {
|
||
pinusClient.request('activity.gachaHandler.pull', { gachaId: 8, activityId: 182, count: 500 }, (res) => {
|
||
let map = new Map();
|
||
for(let h of res.data.result) {
|
||
if(h.id == 21066) {
|
||
let arr = map.get('planId')||[];
|
||
let obj = arr.find(cur => cur.planId == h.planId);
|
||
obj? obj.count ++: arr.push({planId: h.planId, count: 1});
|
||
map.set('planId', arr);
|
||
|
||
if(!map.has('count')) map.set('count', 0);
|
||
map.set('count', map.get('count') + h.count);
|
||
}
|
||
}
|
||
|
||
console.log(index, map.get('planId').sort((a,b) => a.planId - b.planId).map(cur => `${cur.planId}&${cur.count}`).join('|'), map.get('count'));
|
||
|
||
_done();
|
||
});
|
||
});
|
||
});
|
||
it(`result`, function(done) {
|
||
done();
|
||
})
|
||
done();
|
||
});
|
||
})
|
||
});
|
||
|
||
describe('抽卡测试', function () {
|
||
let pinusClient: PinusWSClient;
|
||
let roleInfo;
|
||
|
||
before(function (done) {
|
||
const c = new Client();
|
||
const timer = setInterval(() => {
|
||
if (c.client) {
|
||
pinusClient = c.client;
|
||
roleInfo = c.roleInfo;
|
||
clearInterval(timer);
|
||
done();
|
||
}
|
||
}, 500);
|
||
});
|
||
|
||
after(function (done) {
|
||
pinusClient.disconnect();
|
||
// disconnect 后等待 500ms,供服务器清理环境、退出频道等
|
||
setTimeout(() => {
|
||
done();
|
||
}, 500);
|
||
});
|
||
|
||
it('检查获取抽卡列表', function (done) {
|
||
pinusClient.request('activity.gachaHandler.getGachaList', { }, (res) => {
|
||
checkSuccessResponse(res);
|
||
expect(res.data.list).to.be.an('array');
|
||
res.data.list.forEach(gacha => {
|
||
expect(gacha.gachaId).to.be.a('number');
|
||
expect(gacha.isFree).to.be.a('boolean');
|
||
expect(gacha.count).to.be.a('number');
|
||
if(gacha.gachaId == GACHA_TYPE.NORMAL) {
|
||
checkHope(gacha.hope);
|
||
expect(gacha.point).to.be.a('number');
|
||
checkTurntable(gacha.turntable);
|
||
}
|
||
if(gacha.gachaId == GACHA_TYPE.ASSIGN) {
|
||
expect(gacha.pickHero).to.be.a('number');
|
||
}
|
||
});
|
||
done();
|
||
});
|
||
});
|
||
|
||
it('检查元宝招募', function (done) {
|
||
let gachaId = GACHA_TYPE.ASSIGN;
|
||
let hid1 = 1, hid2 = 2;
|
||
checkSetHope(pinusClient, gachaId, hid1, hid2, function(res) {
|
||
addItem(pinusClient, 22001, 10, function(res) {
|
||
checkPull(pinusClient, done, GACHA_TYPE.NORMAL, 0, 1);
|
||
});
|
||
})
|
||
});
|
||
|
||
it('检查友情点招募', function (done) {
|
||
addItem(pinusClient, 40003, 1000, function(res) {
|
||
checkPull(pinusClient, done, GACHA_TYPE.FRDPOINT, 0, 1);
|
||
});
|
||
});
|
||
|
||
it('检查求贤若渴招募', function (done) {
|
||
let gachaId = GACHA_TYPE.ASSIGN;
|
||
let pickHero = 1;
|
||
addItem(pinusClient, 22002, 10, function(res) {
|
||
checkSetPickHero(pinusClient, gachaId, 0, pickHero, (res) => {
|
||
checkPull(pinusClient, done, GACHA_TYPE.ASSIGN, 0, 1);
|
||
})
|
||
});
|
||
});
|
||
});
|
||
|
||
function checkFloor(floor) {
|
||
expect(floor).to.be.an('array');
|
||
floor.forEach(f => {
|
||
expect(f.id).to.be.a('number');
|
||
expect(f.count).to.be.a('number');
|
||
})
|
||
}
|
||
|
||
function checkHope(hope) {
|
||
expect(hope).to.be.an('array');
|
||
hope.forEach(f => {
|
||
expect(f.id).to.be.a('number');
|
||
expect(f.hid).to.be.a('number');
|
||
expect(f.hasGet).to.be.a('boolean');
|
||
})
|
||
}
|
||
|
||
function checkTurntable(turntable) {
|
||
expect(turntable).to.be.an('array');
|
||
turntable.forEach(f => {
|
||
expect(f.quality).to.be.a('number');
|
||
expect(f.hasGet).to.be.a('boolean');
|
||
})
|
||
}
|
||
|
||
function checkPull(pinusClient, done, gachaId, activityId, count) {
|
||
|
||
pinusClient.request('activity.gachaHandler.pull', { gachaId, activityId, count }, (res) => {
|
||
checkSuccessResponse(res);
|
||
expect(res.data.gachaId).to.be.a('number');
|
||
checkResult(res.data.result, count);
|
||
expect(res.data.isFree).to.be.a('boolean');
|
||
expect(Date.parse(res.data.refFreeTime)).to.be.a('number');
|
||
expect(res.data.count).to.be.a('number');
|
||
checkFloor(res.data.floor);
|
||
expect(res.data.point).to.be.a('number');
|
||
checkHope(res.data.hope);
|
||
// checkHero(res.data.heroes);
|
||
|
||
done()
|
||
});
|
||
}
|
||
|
||
function checkResult(result, count) {
|
||
expect(result).to.be.an('array');
|
||
expect(result.length).equal(count);
|
||
result.forEach(r => {
|
||
expect(r.planId).to.be.a('number');
|
||
expect(r.hid).to.be.a('number');
|
||
expect(r.isTransfer).to.be.a('boolean');
|
||
expect(r.id).to.be.a('number');
|
||
expect(r.count).to.be.a('number');
|
||
})
|
||
}
|
||
|
||
function checkSetPickHero(pinusClient, gachaId, activityId, pickHero, cb) {
|
||
pinusClient.request('activity.gachaHandler.setPickHero', { gachaId, activityId, pickHero }, (res) => {
|
||
checkSuccessResponse(res);
|
||
expect(res.data.gachaId).equal(gachaId);
|
||
expect(res.data.activityId).equal(activityId);
|
||
expect(res.data.pickHero).equal(pickHero);
|
||
|
||
cb(res);
|
||
});
|
||
}
|
||
|
||
function checkSetHope(pinusClient, gachaId, hid1, hid2, cb) {
|
||
pinusClient.request('activity.gachaHandler.setHope', { gachaId, hope: [{id: 1, hid: hid1}, {id:2, hid: hid2}] }, (res) => {
|
||
checkSuccessResponse(res);
|
||
expect(res.data.gachaId).equal(gachaId);
|
||
checkHope(res.data.hope)
|
||
cb(res);
|
||
});
|
||
} |