#javascript #html #node.js #unit-testing
#javascript #HTML #node.js #модульное тестирование
Вопрос:
Это формат, который я использую для разбора шахматной записи, продолжения хода черных и определения вариантов. <1. Nf3 Nf6 2. e3 e6>
<1... Nf6 2. e3>
<main2 main 3. Nf3 Nf6 4. e3>
Я протестировал свой анализатор с кучей тестовых данных. Теперь я хочу протестировать ее со случайными нечеткими данными, которые выглядят аналогично формату.
Как я могу сгенерировать нечеткие тестовые данные, которые на 60% похожи на допустимый формат. Вот так:
<1.
<1. B3a
1<B N C>
Я пробовал это, но это порождает полную тарабарщину, бесполезную.
function genCode(len) {
let chars = "<>abcdefgh.NBQRKO-12345678 ".split('');
function nextChar() {
return chars[Math.floor(Math.random()*chars.length)];
};
let res = "";
for (let i = 0; i < len; i ) {
res = nextChar();
}
return res;
}
Ответ №1:
Итак, я попробовал это, и это вроде работает:
function repeat(code, n) {
let res = "";
while (--n) {
res = code;
}
return res;
}
function corrupt(code) {
let chars = "<>abcdefgh.NBQRKO-12345678 ".split('');
function nextChar() {
return chars[Math.floor(Math.random()*chars.length)];
};
let res = "";
for (let i = 0; i < code.length; i ) {
res = Math.random() < 0.8 ? code[i] : nextChar();
}
return res;
}
console.log(corrupt(repeat(`<1. Nf3 Nf6 2. Ba5 Bg4 3. e4> <4... a6> <5... Qa7> <7... a8>`, 100
)));