Пакет: matlab.test.behavior
Суперклассы: matlab.unittest.TestCase
Проверяйте, удовлетворяет ли класс контракту на missing
значения
Чтобы проверить, missing ли
значение для вашего класса удовлетворяет отсутствующему контракту в MATLAB®, создайте тестовый класс, который выводится из matlab.test.behavior.Missing
класс. Если ваш класс представляет тип данных, и вы хотите, чтобы MATLAB обработал missing
значения вашего класса подобны встроенным классам, гарантируйте, что ваш класс удовлетворяет missing
контракт.
Как правило, тест поведения используется как часть рабочего процесса разработки, управляемого тестами. Если вы хотите, чтобы отсутствующее значение для вашего класса удовлетворяло отсутствующему контракту с MATLAB, запишите тест поведения и измените класс в тесте, пока результаты тестирования не будут такими, как вы ожидаете. Например, если ваш класс поддерживает сравнения и упорядоченное расположение и может использоваться как индикатор отсутствующего значения, все тесты должны пройти. Если ваш класс не поддерживает упорядоченное расположение, установите SupportsOrdering
свойство к false
и ожидайте, что MATLAB отфильтровывает тесты, связанные с упорядоченным расположением.
Ваш тест поведения должен происходить только из matlab.test.behavior.Missing
и задайте абстрактные свойства. Однако с matlab.test.behavior.Missing
является подклассом matlab.unittest.TestCase
можно использовать функциональность среды модульного тестирования.
Abstract | true |
HandleCompatible | true |
Для получения информации об атрибутах класса см. раздел «Атрибуты класса».
Задайте значения для всех abstract
свойства в properties
блок вашего тестового класса.
MissingValue
- Отсутствующее значение для тестируемого классаОтсутствующее значение для тестируемого класса, заданное как допустимое скалярное значение MATLAB или выражение, возвращающее неотсутствующее значение.
Пример: NaN
или missing
или ' '
SetAccess | public |
GetAccess | public |
Abstract | true |
PrototypeValue
- Неотсутствующее значение для тестируемого классаЛюбое неотсутствующее значение для тестируемого класса, заданное как допустимое скалярное значение MATLAB или выражение, которое возвращает неотсутствующее значение. Обычно, если конструктор классов возвращает неотсутствующее значение, PrototypeValue
- вызов конструктора.
Пример: 0 или datetime
SetAccess | public |
GetAccess | public |
Abstract | true |
ClassesWithSupportedConversions
- Классы, которые можно преобразовать в тестируемый классСписок классов, которые могут быть преобразованы в тестируемый класс, заданный как строковые массивы имен классов.
Если можно преобразовать в другой класс, а затем вернуться в класс, то ваш класс имеет поддерживаемое преобразование из другого класса. Для примера, если MyClass(OtherClass(missing)) == MyClass(missing)
чем OtherClass
- класс с поддерживаемыми преобразованиями.
Пример: "string"
или ["double","single"]
SetAccess | public |
GetAccess | public |
Abstract | true |
Типы данных: string
При необходимости переопределите значения свойств бетона в функции TestClassSetup
блок методов вашего тестового класса.
SupportsComparison
- Класс поддерживает сравнениеtrue
(по умолчанию) | false
Индикатор того, что класс поддерживает сравнение, задается как true
или false
. Класс, который поддерживает сравнения, позволяет использовать ==
и ~=
.
Если вы задаете SupportsComparison
на false
, ожидайте, что сравнение и упорядочивание тестов будут фильтроваться по отказу допущений. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: logical
SupportsOrdering
- логический скаляр для управления запуском <, > и так далееtrue
(по умолчанию) | false
Индикатор того, что класс поддерживает упорядоченное расположение, задается как true
или false
. Класс, поддерживающий упорядоченное расположение, позволяет использовать <
, >
, <=
, и >=
.
Если вы задаете SupportsOrdering
на false
, ожидать фильтрации связанных тестов по отказу допущений. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: logical
UsableAsMissingIndicator
- Класс может использоваться как индикатор отсутствующего значенияtrue
(по умолчанию) | false
Индикатор того, что класс может использоваться как индикатор отсутствующего значения для ismissing
функция, заданная как true
или false
.
Если вы задаете UsableAsMissingIndicator
на false
, ожидать фильтрации связанных тестов по отказу допущений. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: logical
FillValue
- Значение для растущего массиваMissingValue
свойство (по умолчанию) | допустимое скалярное значение MATLABЗначение заливки, используемое вашим классом для растущих массивов, задается как допустимое скалярное значение MATLAB. По умолчанию значение FillValue
совпадает со значением MissingValue
свойство.
Пример: 0
SetAccess | protected |
GetAccess | public |
Создайте MyDataClass
класс, который может содержать отсутствующее значение. Класс поддерживает сравнение и упорядоченное расположение, и реализация отсутствующего значения должна удовлетворять отсутствующему контракту в MATLAB. Если вы вызываете конструктор без входов, это возвращает отсутствующее значение.
classdef MyDataClass properties SomeData; MissingVal = false; end methods function obj = MyDataClass(value) if nargin m = size(value,1); n = size(value,2); for i = 1:m for j = 1:n if ismissing(value(i,j)) obj(i,j).MissingVal = true; else obj(i,j).SomeData = value(i,j); obj(i,j).MissingVal = false; end end end else obj.MissingVal = true; end end % Define ismissing behavior function m = ismissing(obj,v) if nargin > 1 m = isequaln(obj,v); else m = [obj.MissingVal]; end m = reshape(m,size(obj)); end end end
Чтобы создать простой тестовый класс, который проверяет это MyDataClass
удовлетворяет отсутствующее значение контракту, подклассу matlab.test.behavior.Missing
. Тест может использовать функциональность среды модульного тестирования, но MissingValueTest
проверяет только отсутствующий контракт.
classdef MissingValueTest < matlab.test.behavior.Missing properties MissingValue = MyDataClass; PrototypeValue = MyDataClass(7); ClassesWithSupportedConversions = []; end end
Запустите тесты и проверьте результаты. Тесты на сравнение, упорядоченное расположение, равенство и использование MyDataClass
в качестве второго входа ismissing
сбой.
results = runtests('MissingValueTest');
Running MissingValueTest .... ================================================================================ Error occurred in MissingValueTest/comparison and it did not run to completion. --------- Error ID: --------- 'MATLAB:UndefinedFunction' -------------- Error Details: -------------- Undefined function 'eq' for input arguments of type 'MyDataClass'. Error in matlab.test.behavior.Missing/comparison (line 129) testCase.verifyFalse(testCase.MissingValue == testCase.MissingValue, getString(message('MATLAB:test:behavior:missing:EqualFalse'))); ================================================================================ . ================================================================================ Error occurred in MissingValueTest/ordering and it did not run to completion. --------- Error ID: --------- 'MATLAB:UndefinedFunction' -------------- Error Details: -------------- Undefined function 'lt' for input arguments of type 'MyDataClass'. Error in matlab.test.behavior.Missing/ordering (line 136) testCase.verifyFalse(testCase.MissingValue < testCase.MissingValue, getString(message('MATLAB:test:behavior:missing:LessThanFalse'))); ================================================================================ . ================================================================================ Verification failed in MissingValueTest/isequalRules. ---------------- Test Diagnostic: ---------------- isequal(MissingValue, MissingValue) must return false, because all missing values are unequal. --------------------- Framework Diagnostic: --------------------- verifyFalse failed. --> The value must evaluate to "false". Actual Value: logical 1 ------------------ Stack Information: ------------------ In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.isequalRules) at 145 ================================================================================ ================================================================================ Verification failed in MissingValueTest/isequalRules. ---------------- Test Diagnostic: ---------------- isequaln(MissingValue, missing) must return true. --------------------- Framework Diagnostic: --------------------- verifyTrue failed. --> The value must evaluate to "true". Actual Value: logical 0 ------------------ Stack Information: ------------------ In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.isequalRules) at 147 ================================================================================ . ================================================================================ Verification failed in MissingValueTest/IsMissing2ndInput. ---------------- Test Diagnostic: ---------------- ismissing(MissingValue, missing) must return true. --------------------- Framework Diagnostic: --------------------- verifyTrue failed. --> The value must evaluate to "true". Actual Value: logical 0 ------------------ Stack Information: ------------------ In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.IsMissing2ndInput) at 154 ================================================================================ ... Done MissingValueTest __________ Failure Summary: Name Failed Incomplete Reason(s) ================================================================================= MissingValueTest/comparison X X Errored. --------------------------------------------------------------------------------- MissingValueTest/ordering X X Errored. --------------------------------------------------------------------------------- MissingValueTest/isequalRules X Failed by verification. --------------------------------------------------------------------------------- MissingValueTest/IsMissing2ndInput X Failed by verification.
Итерационное обновление MyDataClass
чтобы удовлетворить отсутствующий контракт. Чтобы удовлетворить сравнению и упорядоченному расположению, задайте eq
, ne
, lt
, gt
, le
, и ge
в methods
блок MyDataClass
.
% Class supports comparison function tf = eq(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && eq(obj1.SomeData,obj2.SomeData); end function tf = ne(obj1,obj2) tf = ~eq(obj1,obj2); end % Class supports ordering function tf = lt(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && lt(obj1.SomeData,obj2.SomeData); end function tf = gt(obj1,obj2) tf = lt(obj2,obj1); end function tf = le(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && ~gt(obj1,obj2); end function tf = ge(obj1,obj2) tf = le(obj2,obj1); end
Запустите тесты с подробной информацией о выходных данных терзающего уровня и проверьте результаты.
results = runtests('MissingValueTest','OutputDetail',1);
...... FAIL: MissingValueTest/isequalRules in Missing.isequalRules at 145 :: verifyFalse failed. FAIL: MissingValueTest/isequalRules in Missing.isequalRules at 147 :: verifyTrue failed. . FAIL: MissingValueTest/IsMissing2ndInput in Missing.IsMissing2ndInput at 154 :: verifyTrue failed. ...
Итерационное обновление MyDataClass
чтобы удовлетворить правилам равенства. Определить isqual
и isequaln
в methods
блок MyDataClass
.
% Class supports isequal/isequaln rules function tf = isequal(obj1,obj2) tf = eq(obj1,obj2); end function tf = isequaln(obj1,obj2) tf = all(ismissing([obj1 obj2])) || eq(obj1,obj2); end
Запустите тесты и проверьте результаты. Тесты проходят и MyDataClass
удовлетворяет отсутствующее значение контракту.
results = runtests('MissingValueTest');
Running MissingValueTest .......... Done MissingValueTest __________
Тест поведения утверждает, что следующие условия верны.
Отсутствующее значение в MissingValue
свойство совпадает со значением в PrototypeValue
свойство.
The MissingValue
и PrototypeValue
значения скаляром.
ismissing
функция, вызываемая с помощью MissingValue
значение возвращает true
.
ismissing
функция, вызываемая с помощью PrototypeValue
значение возвращает false
.
Тест поведения проверяет, что преобразование отсутствующего значения в образец вашего класса возвращает то же значение, что и MissingValue
свойство.
Кроме того, для каждого класса, который может преобразовать ваш класс, тест поведения проверяет преобразование отсутствующих значений. Для примера, если вы можете преобразовать между OtherClass
и MyClass
, тест поведения проверяет, что MyClass(OtherClass(missing)) == MyClass(missing)
. The ClassesWithSupportedConversions
свойство указывает, какие классы может преобразовать ваш класс.
Учитывая массив объектов вашего класса, подписанные тесты назначения проверяют, что можно развернуть массив с помощью отсутствующего значения и присвоить отсутствующее значение области значений элементов массива.
Тесты конкатенации проверяют, что массивы объектов вашего класса могут быть объединены с отсутствующими значениями.
Тесты на равенство проверяют, isequal
возвращает false
для двух отсутствующих значений и isequaln
возвращает true
для двух отсутствующих значений.
SupportsComparison
По умолчанию тест поведения принимает, что ваш класс поддерживает сравнение значений, включая отсутствующие значения. Сравнительные тесты проверяют, что вы внедрили ==
и ~=
как ожидает MATLAB, относительно отсутствующих значений.
Сравнение двух отсутствующих значений с ==
возвращает false
.
Сравнение двух отсутствующих значений с ~=
возвращает true
.
Если ваш класс не поддерживает сравнения, установите SupportsComparison
свойство к false
MATLAB не запускает эти тесты. В этом случае сравнительные тесты фильтруются как отказы в допущении. Дополнительно, если SupportsComparison = false
MATLAB не запускает тесты упорядоченного расположения.
SupportsOrdering
По умолчанию тест поведения принимает, что ваш класс поддерживает упорядоченное расположение значений, включая отсутствующие значения. Упорядочивающие тесты проверяют, что вы внедрили <
, >
, <=
, и >=
как ожидает MATLAB, относительно отсутствующих значений. Для отсутствующих значений MATLAB ожидает, что все операции упорядоченного расположения вернутся false
.
Если ваш класс поддерживает упорядоченное расположение, чтобы удовлетворить контракт о поведении, он также должен поддержать сравнения. Если SupportsComparison = false
MATLAB не запускает упорядоченные расположения или сравнительные тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
Если ваш класс не поддерживает упорядоченное расположение, установите SupportsOrdering
свойство к false
MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
UsableAsMissingIndicator
По умолчанию тест поведения принимает, что образец вашего класса может использоваться в качестве необязательного входного параметра ismissing
функция, которая представляет индикатор отсутствующего значения.
Если ваш класс не может быть индикатором отсутствующего значения, установите UsableAsMissingIndicator
свойство к false
MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
FillValue
Тест поведения проверяет, что, когда MATLAB выращивает массив элементов вашего класса, новые элементы имеют значение, заданное FillValue
свойство. По умолчанию в FillValue
свойство совпадает с MissingValue
свойство. Однако можно задать другое значение для FillValue
.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.