Пакет: 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 = falseMATLAB не запускает тесты упорядоченного расположения.
SupportsOrderingПо умолчанию тест поведения принимает, что ваш класс поддерживает упорядоченное расположение значений, включая отсутствующие значения. Упорядочивающие тесты проверяют, что вы внедрили <, >, <=, и >= как ожидает MATLAB, относительно отсутствующих значений. Для отсутствующих значений MATLAB ожидает, что все операции упорядоченного расположения вернутся false.
Если ваш класс поддерживает упорядоченное расположение, чтобы удовлетворить контракт о поведении, он также должен поддержать сравнения. Если SupportsComparison = falseMATLAB не запускает упорядоченные расположения или сравнительные тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
Если ваш класс не поддерживает упорядоченное расположение, установите SupportsOrdering свойство к false MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
UsableAsMissingIndicatorПо умолчанию тест поведения принимает, что образец вашего класса может использоваться в качестве необязательного входного параметра ismissing функция, которая представляет индикатор отсутствующего значения.
Если ваш класс не может быть индикатором отсутствующего значения, установите UsableAsMissingIndicator свойство к false MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения помечаются как отказы в допущении (отфильтрованные тесты).
FillValueТест поведения проверяет, что, когда MATLAB выращивает массив элементов вашего класса, новые элементы имеют значение, заданное FillValue свойство. По умолчанию в FillValue свойство совпадает с MissingValue свойство. Однако можно задать другое значение для FillValue.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.