Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Operations on dataset

Boost , Boost.Test , Data-driven test cases

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Как уже упоминалось ранее, одним из основных аспектов использованияЕдиная тестовая системаНаборы данных заключаются в количестве операций, предусмотренных для их комбинации.

Для этого предоставляются три оператора:

  • Сотрудничество с оператором+
  • оператор^на наборах данных
  • Сетки или картезианские изделияоператор*
[Tip] Tip

Все эти операторы являются ассоциативными, что позволяет их комбинировать без скобки. Однако до сих пор действует правило о приоритете операторов для языка.

присоединение, обозначаемое+, представляет собой операцию на двух наборах данныхdsaиdsbодного и того же типа подвижности и совместимости, в результате чегоконкатенацияэтих двух наборов данныхdsaиdsbслева на правый порядок символа+:

dsa = (a_1, a_2, ... a_i)
dsb = (b_1, b_2, ... b_j)
dsa + dsb = (a_1, a_2, ... a_i, b_1, b_2, ... b_j)

Свойства следующие:

  • результирующий набор данных имеет ту же активность, что и операндные наборы данных,
  • размер возвращенного набора данных - сумма размера соединенных наборов данных,
  • операция является ассоциативной, и можно объединить более двух наборов данных в одном выражении. Следующие соединения эквивалентны для любых наборов данныхdsa,dsbиdsc

    dsa+dsc==dsa+dsa+dscdscdsc==dsa+dsb+dsb+dsb+[
[Warning] Warning

В выраженииdsa+dsb,dsaи/илиdsbмогут быть бесконечного размера. Полученный набор данных также будет иметь бесконечный размер. Еслидшабесконечна, то содержаниедсбникогда не будет достигнуто.

Example: Example of join on datasets

Код

ОпределениеBOOST_TEST_MODULE

выход

>dataset_example62Запуск5тестированиеслучаи...128910***Ошибкиобнаружены

Azip, обозначаемый^, представляет собой операцию на двух наборах данныхdsaиdsbтой же плотности и того же размера, в результате чего набор данных, в которомk-й образецdsaсоединен с соответствующимk-й образецdsb. Полученный порядок выборки набора данных следует слева направо против символа^.

dsa = (a_1, a_2, ... a_i)
dsb = (b_1, b_2, ... b_i)
dsa ^ dsb = ( (a_1, b_1), (a_2, b_2) ... (a_i, b_i) )

Свойства следующие:

  • arity of the resulting dataset - сумма arities of the operand datasets,
  • размер полученного набора данных равен размеру наборов данных (поскольку они должны быть одного размера), исключение сделано для случая несоответствия размера наборов данных операнда (см. ниже),
  • [acсоциативный], иоперация является ассоциативной, и можно объединить более двух наборов данных в одном выражении;

    ( dsa ^ dsb ) ^ dsc
    == dsa ^ ( dsb ^ dsc )
    == dsa ^ dsb ^ dsc
    
    [ORIG_END] -->

Конкретная обработка выполняется, еслиdsaиdsbимеют разные размеры. Правило выглядит следующим образом:

  • Если оба набора данных имеют одинаковый размер, это размер полученного набора данных (тогда этот размер может быть бесконечным).
  • В противном случае, если один из наборов данных имеет размер 1 (синглтон) или бесконечный размер, полученный размер регулируется другим набором данных.
  • В противном случае исключение выбрасывается во время выполнения
[Caution] Caution

Если операцияzipне поддерживается для компилятора, макросBOOST_TEST_NO_ZIP_COMPOSITION_AVAILABLEбудет автоматически устанавливатьсяUnit Test Framework.

Example: Example of zip on datasets

Код

выход

>dataset_example61Running2testcases...1,qwerty2,asdfg***Noошибокобнаружен

сетка, обозначаемая*, представляет собой операцию на двух любых наборах данныхdsaиdsb, в результате чего каждый образецdsaсоединен с каждым образцомdsbточно один раз. Полученный порядок выборки набора данных следует слева направо против символа*. Самые правильные образцы набора данных сначала повторяются.

dsa = (a_1, a_2, ... a_i)
dsb = (b_1, b_2, ... b_j)
dsa * dsb = ((a_1, b_1), (a_1, b_2) ... (a_1, b_j), (a_2, b_1), ... (a_2, b_j) ... (a_i, b_1), ... (a_i, b_j))

Сетка, следовательно, подобна математическому понятию картезианского продукта..

Свойства следующие:

  • arity of the resulting dataset - сумма arities of the operand datasets,
  • размер полученного набора данных является продуктом размеров наборов данных,
  • операция является ассоциативной, и можно объединить более двух наборов данных в одном выражении;
  • Что касаетсяzip, то нет необходимости в том, чтобы набор данных имел одинаковый тип образцов.
[Caution] Caution

Если работасеткине поддерживается для компилятора, макросBOOST_TEST_NO_GRID_COMPOSITION_AVAILABLEбудет автоматически устанавливаться.

В следующем примере генератор случайных чисел является вторым набором данных. Его состояние оценивается 6 раз (3 раза для первогоxrange- первого измерения - и дважды для второгоxrange- второго измерения - к которому он пристегнут. Обратите внимание, что состояние случайного двигателя не копируется между двумя последовательными оценками первого измерения.

Example: Example of Cartesian product

Код

]]]]][717

выход



если последовательность рассматривается как множество


PrevUpHomeNext

Статья Operations on dataset раздела Boost.Test Data-driven test cases может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Data-driven test cases ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:33:32/0.0086019039154053/0