Привет всем,
Я пытаюсь протестировать программы на C, которые используют пользовательский ввод ... Как приложение для обучения.Таким образом, avaliator (учитель) может писать тесты, а я компилирую код с помощью докера и возвращаю результат программы, которую я отправляю.После этого я проверяю, не прошел ли один из тематических тестов ..
, для этого у меня есть две строки, например:
result = "input_compiled1540323505983: /home/compiler/input/input.c:9:main: Утверждение `B == 2 'не выполнено. timeout: отслеживаемая команда сбросила ядро" Прервано "и массив с кейс-тестами, подобный: caseTests = [" assert (A == 3); // A должен иметь значение3; "," assert (B == 2); // B должно иметь значение 2; "," assert (strcmp (Fulano, "Fulano") == 0); // Fulano должен быть равен Fulano]
Мне нужно отправить обратно с моего сервера что-то вроде этого:
{console: [true, true, true]}
Где каждое true - это соответствующий тест для каждого теста в массиве тестов
Итак, мне нужно проверить, содержит ли одна строка часть другой строки ... и сейчас я сделал это так:
criandoConsole = function(arrayErros, arrayResult){
var consol = arrayErros.map( function( elem ) {
var local = elem.match(/\((.*)\)/);
if(arrayResult.indexOf(local) > -1 ) {
return false;
}
else return true;
});
return consol;
}
Мне интересно, есть ли более эффективный способ сделать это.Я использую nodejs в качестве сервера. Кто-нибудь знает лучший способ?!
ps: Просто сделать, как result.contains(caseTests[0])
не работает..