Поиск строки с помощью Javascript - PullRequest
0 голосов
/ 23 октября 2018

Привет всем,

Я пытаюсь протестировать программы на 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]) не работает..

1 Ответ

0 голосов
/ 24 октября 2018

Я знаю, что это меняет проблему, но можно ли упростить массив ошибок, включив в него только поисковые термины?Например,

result = "input_compiled1540323505983: /home/compiler/input/input.c:9: main: Assertion `B==2' failed. timeout: the monitored command dumped core Aborted ";

//simplify the search patterns
caseTests = [
"A==3",
"B==2",
"strcmp(Fulano, \"Fulano\")==0"
]

criandoConsole = function(arrayErros, arrayResult){
    var consol = arrayErros.map( function( elem ) {
    if (arrayResult.indexOf(elem) != -1)
      return false; //assert failed?
    else
      return true; //success?
    });
    return consol;
}

console.log(criandoConsole(caseTests,result));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...