Main Content

matlab.unittest.constraints.IsSupersetOf 类

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

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

描述

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

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

创建对象

描述

示例

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

  • actualsubset 属于同一个类。

  • isobject(actual) 返回 true

  • isobject(subset) 返回 true

属性

全部展开

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

属性:

GetAccess
public
SetAccess
private

示例

全部折叠

使用 IsSupersetOf 约束测试超集。

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsSupersetOf

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

testCase = TestCase.forInteractiveUse;

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

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

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

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

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

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

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

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

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

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

版本历史记录

在 R2016a 中推出