| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- //
- // JXCountFormatterTests.m
- // AICityTests
- //
- // Feature: 003-ios-api-https
- // 数字格式化工具单元测试
- //
- #import <XCTest/XCTest.h>
- #import "JXCountFormatter.h"
- @interface JXCountFormatterTests : XCTestCase
- @end
- @implementation JXCountFormatterTests
- #pragma mark - 基础数字格式化测试
- - (void)testFormatSmallNumbers {
- XCTAssertEqualObjects([JXCountFormatter formatCount:0], @"0");
- XCTAssertEqualObjects([JXCountFormatter formatCount:1], @"1");
- XCTAssertEqualObjects([JXCountFormatter formatCount:99], @"99");
- XCTAssertEqualObjects([JXCountFormatter formatCount:999], @"999");
- }
- - (void)testFormatThousandsWithK {
- XCTAssertEqualObjects([JXCountFormatter formatCount:1000], @"1.0k");
- XCTAssertEqualObjects([JXCountFormatter formatCount:1500], @"1.5k");
- XCTAssertEqualObjects([JXCountFormatter formatCount:9999], @"9.9k");
- }
- - (void)testFormatTenThousandsWithWan {
- XCTAssertEqualObjects([JXCountFormatter formatCount:10000], @"1.0万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:15000], @"1.5万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:100000], @"10.0万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:999999], @"99.9万");
- }
- - (void)testFormatHundredMillionsWithYi {
- XCTAssertEqualObjects([JXCountFormatter formatCount:100000000], @"1.0亿");
- XCTAssertEqualObjects([JXCountFormatter formatCount:150000000], @"1.5亿");
- XCTAssertEqualObjects([JXCountFormatter formatCount:1000000000], @"10.0亿");
- }
- #pragma mark - 特定格式方法测试
- - (void)testSpecificFormatMethods {
- long long count = 12345;
-
- NSString *baseFormat = [JXCountFormatter formatCount:count];
-
- XCTAssertEqualObjects([JXCountFormatter formatLikeCount:count], baseFormat);
- XCTAssertEqualObjects([JXCountFormatter formatCommentCount:count], baseFormat);
- XCTAssertEqualObjects([JXCountFormatter formatShareCount:count], baseFormat);
- XCTAssertEqualObjects([JXCountFormatter formatFavoriteCount:count], baseFormat);
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:count], baseFormat);
- }
- #pragma mark - 真实场景测试
- - (void)testRealWorldExamples {
- // 点赞数示例
- XCTAssertEqualObjects([JXCountFormatter formatLikeCount:20000], @"2.0万");
- XCTAssertEqualObjects([JXCountFormatter formatLikeCount:1568000], @"156.8万");
-
- // 播放量示例
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:120000000], @"1.2亿");
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:5600], @"5.6k");
-
- // 评论数示例
- XCTAssertEqualObjects([JXCountFormatter formatCommentCount:8900], @"8.9k");
- XCTAssertEqualObjects([JXCountFormatter formatCommentCount:123000], @"12.3万");
- }
- #pragma mark - 边界值测试
- - (void)testBoundaryValues {
- // 边界值:999 -> 1.0k
- XCTAssertEqualObjects([JXCountFormatter formatCount:999], @"999");
- XCTAssertEqualObjects([JXCountFormatter formatCount:1000], @"1.0k");
-
- // 边界值:9999 -> 1.0万
- XCTAssertEqualObjects([JXCountFormatter formatCount:9999], @"9.9k");
- XCTAssertEqualObjects([JXCountFormatter formatCount:10000], @"1.0万");
-
- // 边界值:99999999 -> 1.0亿
- XCTAssertEqualObjects([JXCountFormatter formatCount:99999999], @"9999.9万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:100000000], @"1.0亿");
- }
- #pragma mark - 精度测试
- - (void)testPrecision {
- // 测试小数点精度(四舍五入)
- XCTAssertEqualObjects([JXCountFormatter formatCount:12345], @"1.2万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:12456], @"1.2万");
- XCTAssertEqualObjects([JXCountFormatter formatCount:12567], @"1.3万");
-
- XCTAssertEqualObjects([JXCountFormatter formatCount:123456789], @"1.2亿");
- XCTAssertEqualObjects([JXCountFormatter formatCount:124567890], @"1.2亿");
- }
- #pragma mark - UI显示场景测试
- - (void)testUIDisplayScenarios {
- // 新发布的视频
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:0], @"0");
-
- // 小众视频
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:123], @"123");
-
- // 热门视频
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:5678], @"5.6k");
-
- // 爆款视频
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:123456], @"12.3万");
-
- // 超级爆款
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:123456789], @"1.2亿");
- }
- #pragma mark - 性能测试
- - (void)testPerformanceFormatCount {
- [self measureBlock:^{
- for (int i = 0; i < 10000; i++) {
- [JXCountFormatter formatCount:i * 1000];
- }
- }];
- }
- - (void)testPerformanceFormatLargeNumbers {
- [self measureBlock:^{
- for (int i = 0; i < 10000; i++) {
- [JXCountFormatter formatCount:i * 100000];
- }
- }];
- }
- #pragma mark - 国际化测试
- - (void)testChineseFormatting {
- // 确保中文格式正确
- NSString *result = [JXCountFormatter formatCount:10000];
- XCTAssertTrue([result containsString:@"万"], @"应该包含'万'字");
-
- result = [JXCountFormatter formatCount:100000000];
- XCTAssertTrue([result containsString:@"亿"], @"应该包含'亿'字");
- }
- - (void)testEnglishFormatting {
- // 确保英文格式正确
- NSString *result = [JXCountFormatter formatCount:1000];
- XCTAssertTrue([result containsString:@"k"], @"应该包含'k'");
- }
- #pragma mark - 数据类型测试
- - (void)testLongLongSupport {
- // 测试大数字支持
- long long veryLargeNumber = 9999999999LL; // 99.9亿
- NSString *result = [JXCountFormatter formatCount:veryLargeNumber];
- XCTAssertNotNil(result);
- XCTAssertTrue([result containsString:@"亿"]);
- }
- - (void)testNegativeNumbers {
- // 虽然实际使用中不应该有负数,但测试边界情况
- // 根据实现,负数可能返回"0"或保持负数格式
- NSString *result = [JXCountFormatter formatCount:-1000];
- XCTAssertNotNil(result);
- }
- #pragma mark - 一致性测试
- - (void)testConsistencyAcrossMethods {
- // 确保所有格式化方法的行为一致
- long long testCounts[] = {0, 999, 1000, 9999, 10000, 99999, 100000, 999999, 1000000, 100000000};
- int numTests = sizeof(testCounts) / sizeof(testCounts[0]);
-
- for (int i = 0; i < numTests; i++) {
- long long count = testCounts[i];
- NSString *baseResult = [JXCountFormatter formatCount:count];
-
- XCTAssertEqualObjects([JXCountFormatter formatLikeCount:count], baseResult);
- XCTAssertEqualObjects([JXCountFormatter formatCommentCount:count], baseResult);
- XCTAssertEqualObjects([JXCountFormatter formatShareCount:count], baseResult);
- XCTAssertEqualObjects([JXCountFormatter formatFavoriteCount:count], baseResult);
- XCTAssertEqualObjects([JXCountFormatter formatPlayCount:count], baseResult);
- }
- }
- @end
|