Платформы поблочного тестирования для C [дубликат]

Вы можете подойти к этому с помощью Reduce () , используя пользовательский объект в качестве начального accumulator. Когда сокращение завершится, вам потребуется дополнительная строка кода, чтобы получить окончательный результат.

const animal_shelter_capacity = 50;

const array1 = [ 
    {"region": "NE", quantity: 25},
    {"region": "NW", quantity: 21},
    {"region": "SE", quantity: 43},
    {"region": "SW", quantity: 18},
    {"region": "Central", quantity: 20} 
];

let obj = array1.reduce((res, curr) =>
{
    let test = (curr.quantity + res.c >= animal_shelter_capacity);

    return {
        r: test ? [...res.r, res.a] : res.r,
        c: test ? curr.quantity : res.c + curr.quantity,
        a: test ? [curr] : [...res.a, curr]
    };
},{r:[], c:0, a:[]});

let newArr = [...obj.r, obj.a];
console.log(newArr);

В предыдущем коде накопленный объект имеет следующие ключи:

  • r : Множество укрытий генерируется постепенно.
  • c : счетчик животных текущего приюта (см. Далее).
  • а : Текущий приют животных.

Когда reduce закончится, последнее укрытие (в собственности a) не будет находиться в массиве укрытий. Итак, мы должны поставить его вручную (это то, что делает дополнительная строка).

7
задан Community 23 May 2017 в 12:08
поделиться

3 ответа

Я пишу встроенное программное обеспечение с помощью C, и я решил записать свою собственную платформу. Это очень просто и записано для Visual Studio MS. Это легко портировано на другие платформы.

http://code.google.com/p/cunitwin32/

Если Вы нацелены на Linux, я думаю, что Проверка могла бы комплект Ваши потребности.

2
ответ дан 7 December 2019 в 18:46
поделиться

В случае, если Вы нацелены на платформы Win32 или привилегированный режим NT, необходимо взглянуть на cfix.

0
ответ дан 7 December 2019 в 18:46
поделиться

Мы запустили некоторую работу с Кунита, который работал за исключением того, что все работало в одном потоке, и любые отказы памяти заставили модульные тесты прекращать работать, который был довольно раздражающим.

Там одна платформа поблочного тестирования C, что ветвления и выполняют каждого тестовые сценарии в отдельном процессе так, чтобы все тесты были выполнены даже в присутствии тестов тот дамп ядра: Проверить

Однако я боюсь потери производительности, которую приносят все эти ветвления (и честно говоря, я не дал ей попытку). Но я не буду жить долго ни с каким единственным тестовым дампом ядра: Я обычно сразу фиксирую его.

Один прием для предотвращения модульных тестов к ядру является защитой утверждения, например: используйте утверждение для предотвращения использования Нулевого указателя (пример с minunit).

void test_function_returning_a_pointer(void)
{
    struct_t *theStruct = function_returning_a_pointer();
    MU_ASSERT(theStruct != NULL);

    //--- now you can use the pointer 
    MU_ASSERT(theStruct->field1 == 0);

    return MU_PASSED;
}

Между прочим, я не знаю ни о какой платформе модульного теста C++, которая не откажет в случае нарушения сегментации.

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

Вы могли уточнить свои трудности? Вы пытаетесь подвергнуть унаследованный код тестам?

0
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: