Вот проверяемая функция:
const delimitedBinary = /^(?:[01]{8} ){3,}$/gm;
const nonDelimitedBinary = /^(?:[01]{8}){3,}$/gm;
const byteRegex = /[01]{8}/gm;
function decode(string) {
string = string.trim();
let bytes;
if (delimitedBinary.test(string + ' ')) {
bytes = (string + ' ').match(byteRegex);
} else if(nonDelimitedBinary.test(string)) {
bytes = string.match(byteRegex);
}
if (bytes) {
return decodeBytes(bytes);
}
return '';
}
function decodeBytes(bytes) {
return utf.getStringFromBytes(bytes.map(byte => parseInt(byte, 2)));
}
У меня есть несколько тестов в test/tests.js
. Вот выдержка:
test('Decodes binary on separate line', t => {
t.is(app.decode('text \n01110000 01100001 01110011 01110011'), 'pass');
});
test('Decodes emojis', t => {
t.is(app.decode('11110000 10011111 10001110 10001001'), '?');
});
Первый тест не пройден. При добавлении console.log()
к первому тесту как
test('Decodes binary on separate line', t => {
console.log(app.decode('text \n01110000 01100001 01110011 01110011'));
t.is(app.decode('text \n01110000 01100001 01110011 01110011'), 'pass');
});
Первый тест сейчас пройден, а второй тест не пройден. При добавлении оператора console.log()
также ко второму тесту,
test('Decodes emojis', t => {
console.log(app.decode('11110000 10011111 10001110 10001001'));
t.is(app.decode('11110000 10011111 10001110 10001001'), '?');
});
... оба теста пройдены.
Я уверен, что делаю что-то глупое или пропускаю что-то большое время. Я просмотрел документ об общих ошибках Ava и не смог найти ничего подходящего.