0

我正在编写一个单元测试来确定字符串值是否以 2 个有效数字出现,即。“NN”

    strokeValue = [NSString stringWithFormat:@"%.2f",someFloatValue];

如何编写一个断言,我的字符串总是有 2 位小数的测试?

4

2 回答 2

3

由于您使用%.2f格式说明符格式化浮点值,因此根据定义,生成的字符串将始终有两位小数。如果someFloatValue是 5,您将获得 5.00。如果someFloatValue是 3.1415926,您将得到 3.14。

无需测试。对于给定的格式说明符,它总是正确的。

编辑:在我看来,您实际上可能想确认您使用的是正确的格式说明符。检查结果字符串的一种方法是:

NSRange range = [strokeValue rangeOfString:@"."];
assert(range.location != NSNotFound && range.location == strokeValue.length - 3, @"String doesn't have two decimals places");
于 2012-11-04T17:18:57.977 回答
1
NSRegularExpression *regex = [NSRegularExpression  regularExpressionWithPattern:@"\.[0-9]{2}$" options:0 error:nil];
if([regex numberOfMatchesInString:strokeValue options:0 range:NSMakeRange(0, [strokeValue length])]) {
    // Passed
} else {
    // failed
}

(未经测试)

于 2012-11-04T16:53:34.463 回答