Main Content

matlab.unittest.constraints.IsSubsetOf 类

命名空间: matlab.unittest.constraints
超类: matlab.unittest.constraints.BooleanConstraint

测试集合是否为指定集合的子集

描述

matlab.unittest.constraints.IsSubsetOf 类提供约束来测试一个集合是否为另一个集合的子集。

该约束使用 ismember 函数来比较各个集合。因此,ismember 函数必须支持用于约束的实际值和预期值。

创建对象

描述

c = matlab.unittest.constraints.IsSubsetOf(superset) 创建一个约束来测试一个集合是否为指定超集的子集,并设置 Superset 属性。对于实际集合 actual,如果 ismember(actual,superset) 返回一个包含所有 true 值的数组,并且至少满足以下条件之一,则满足约束:

  • actualsuperset 属于同一个类。

  • isobject(actual) 返回 true

  • isobject(superset) 返回 true

示例

属性

全部展开

预期超集,以 ismember 函数支持的任何数据类型的值形式返回。在创建约束的过程中指定此属性的值。

属性:

GetAccess
public
SetAccess
private

示例

全部折叠

使用 IsSubsetOf 约束测试子集。

首先,导入此示例中使用的类。

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsSubsetOf

创建一个供交互测试的测试用例。

testCase = TestCase.forInteractiveUse;

测试 {'a';'b'} 是否为 {'c','a','b'} 的子集。测试通过,因为实际集合的元素出现在预期超集中,并且这两个集合属于同一个类。

testCase.verifyThat({'a';'b'},IsSubsetOf({'c','a','b'}))
Verification passed.

使用 {'a';'d'} 作为实际集合再次测试。测试失败,因为实际集合中的元素没有出现在预期超集中。

testCase.verifyThat({'a';'d'},IsSubsetOf({'c','a','b'}))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsSubsetOf failed.
    --> The actual value contains 1 element(s) not found in the expected superset:
        --> Element at index 2:
                {'d'}
    
    Actual Value:
      2×1 cell array
    
        {'a'}
        {'d'}
    Expected Superset:
      1×3 cell array
    
        {'c'}    {'a'}    {'b'}

验证数值向量 [1 2 3] 不是数值矩阵 eye(3) 的子集。

testCase.verifyThat([1 2 3],~IsSubsetOf(eye(3)))
Verification passed.

测试数值向量 single(1:3) 是否为数值向量 0:5 的子集。测试失败,因为实际值和预期值具有不同类型。

testCase.verifyThat(single(1:3),IsSubsetOf(0:5))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsSubsetOf failed.
    --> Classes do not match.
        
        Actual Class:
            single
        Expected Class:
            double
    
    Actual Value:
      1×3 single row vector
    
         1     2     3
    Expected Superset:
         0     1     2     3     4     5

使用 IsSubsetOf 约束比较两个表。此测试通过,因为实际表的行出现在预期表中。

actual = table([3,1]',{'C';'A'},logical([0;1]));
expected = table([1:2:5]',{'A';'C';'E'},logical([1;0;0]));
testCase.verifyThat(actual,IsSubsetOf(expected))
Verification passed.

版本历史记录

在 R2016a 中推出