Adopt a white theme, add home-page shortcuts, and show usage metrics with color-coded details, automatic units, and explicit estimated-cost coverage. Update the README screenshots.
30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
import { formatDuration, formatUsageNumber } from '../src/services/usageNumber';
|
|
|
|
describe('使用统计数量单位', () => {
|
|
test('按数量级自动切换 K、M、B', () => {
|
|
expect(formatUsageNumber(999, 'en-US')).toBe('999');
|
|
expect(formatUsageNumber(1_000, 'en-US')).toBe('1K');
|
|
expect(formatUsageNumber(132_000, 'en-US')).toBe('132K');
|
|
expect(formatUsageNumber(486_500, 'en-US')).toBe('486.5K');
|
|
expect(formatUsageNumber(999_949, 'en-US')).toBe('999.9K');
|
|
expect(formatUsageNumber(999_950, 'en-US')).toBe('1M');
|
|
expect(formatUsageNumber(Number.NaN, 'en-US')).toBe('0');
|
|
});
|
|
|
|
test('延迟在毫秒和秒之间自动切换', () => {
|
|
expect(formatDuration(842, 'en-US')).toBe('842 ms');
|
|
expect(formatDuration(1_284, 'en-US')).toBe('1.28 s');
|
|
expect(formatDuration(12_840, 'en-US')).toBe('12.8 s');
|
|
expect(formatDuration(Number.NaN, 'en-US')).toBe('0 ms');
|
|
});
|
|
|
|
test('百万级使用 M 并在达到阈值时自动切换为 B', () => {
|
|
expect(formatUsageNumber(1_000_000, 'en-US')).toBe('1M');
|
|
expect(formatUsageNumber(12_340_000, 'en-US')).toBe('12.3M');
|
|
expect(formatUsageNumber(999_949_999, 'en-US')).toBe('999.9M');
|
|
expect(formatUsageNumber(999_950_000, 'en-US')).toBe('1B');
|
|
expect(formatUsageNumber(1_250_000_000, 'en-US')).toBe('1.3B');
|
|
});
|
|
});
|