Пакет: 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 собственность.
MissingValue и PrototypeValue значения являются скалярными.
ismissing функция, вызываемая с помощью MissingValue возврат значения true.
ismissing функция, вызываемая с помощью PrototypeValue возврат значения false.
Тест поведения проверяет, что преобразование отсутствующего значения в экземпляр класса возвращает то же значение, что и MissingValue собственность.
Кроме того, для каждого класса, который может быть преобразован, тест поведения проверяет преобразование отсутствующих значений. Например, если можно преобразовать между OtherClass и MyClass, тест поведения проверяет, что MyClass(OtherClass(missing)) == MyClass(missing). 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.