我是靠谱客的博主 阔达老鼠,最近开发中收集的这篇文章主要介绍matlab类中增加公共属性,在递归中支持任何值的公共属性比较器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

import matlab.unittest.TestCase

import matlab.unittest.constraints.IsEqualTo

import matlab.unittest.constraints.RelativeTolerance

import matlab.unittest.constraints.PublicPropertyComparator

testCase = TestCase.forInteractiveUse;

定义实际和预期 timeseries 对象。将一个实际数据点扰动 1%。

expected = timeseries(1:10);

actual = expected;

actual.Data(7) = 1.01*actual.Data(7);

测试是否实际值和预期值在 2% 的相对误差界限内相等。

testCase.verifyThat(actual, IsEqualTo(expected,...

'Within', RelativeTolerance(.02)))

Verification failed.

---------------------

Framework Diagnostic:

---------------------

IsEqualTo failed.

--> ObjectComparator failed.

--> The objects are not equal using "isequal".

--> The tolerance was ignored. The tolerance as specified does not support comparisons of timeseries values.

Actual timeseries:

timeseries

Common Properties:

Name: 'unnamed'

Time: [10x1 double]

TimeInfo: [1x1 tsdata.timemetadata]

Data: [1x1x10 double]

DataInfo: [1x1 tsdata.datametadata]

More properties, Methods

Expected timeseries:

timeseries

Common Properties:

Name: 'unnamed'

Time: [10x1 double]

TimeInfo: [1x1 tsdata.timemetadata]

Data: [1x1x10 double]

DataInfo: [1x1 tsdata.datametadata]

More properties, Methods

在构造约束时使用 PublicPropertyComparator。

testCase.verifyThat(actual, IsEqualTo(expected,...

'Within', RelativeTolerance(.02),...

'Using', PublicPropertyComparator.supportingAllValues))

Interactive verification passed.

测试通过,原因是 PublicPropertyComparator 分别比较每个公共属性而不是一次性比较该对象。在前一测试中,ObjectComparator 比较 timeseries 对象,因此依赖于 timeseries 类的 isequal 方法。由于实际 timeseries 中的扰动,isequal 返回 false。比较器不应用该容差,原因是双精度值容差不能直接应用于 timeseries 对象。在后一测试中,比较器将容差应用于包含双精度值数据的每个公共属性。

最后

以上就是阔达老鼠为你收集整理的matlab类中增加公共属性,在递归中支持任何值的公共属性比较器的全部内容,希望文章能够帮你解决matlab类中增加公共属性,在递归中支持任何值的公共属性比较器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部