Files
honeyDueKMP/iosApp/HoneyDueTests/DoubleExtensionsTests.swift
Trey t 1e2adf7660 Rebrand from Casera/MyCrib to honeyDue
Total rebrand across KMM project:
- Kotlin package: com.example.casera -> com.tt.honeyDue (dirs + declarations)
- Gradle: rootProject.name, namespace, applicationId
- Android: manifest, strings.xml (all languages), widget resources
- iOS: pbxproj bundle IDs, Info.plist, entitlements, xcconfig
- iOS directories: Casera/ -> HoneyDue/, CaseraTests/ -> HoneyDueTests/, etc.
- Swift source: all class/struct/enum renames
- Deep links: casera:// -> honeydue://, .casera -> .honeydue
- App icons replaced with honeyDue honeycomb icon
- Domains: casera.treytartt.com -> honeyDue.treytartt.com
- Bundle IDs: com.tt.casera -> com.tt.honeyDue
- Database table names preserved

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 06:33:57 -06:00

151 lines
3.2 KiB
Swift

//
// DoubleExtensionsTests.swift
// honeyDueTests
//
// Unit tests for Double, Int number formatting extensions.
//
import Testing
@testable import honeyDue
// MARK: - Double.toCurrency Tests
struct DoubleCurrencyTests {
@Test func wholeNumberCurrency() {
let result = 100.0.toCurrency()
#expect(result.contains("100"))
#expect(result.contains("$"))
}
@Test func decimalCurrency() {
let result = 49.99.toCurrency()
#expect(result.contains("49.99"))
}
@Test func zeroCurrency() {
let result = 0.0.toCurrency()
#expect(result.contains("0"))
#expect(result.contains("$"))
}
@Test func largeNumberCurrency() {
let result = 1234567.89.toCurrency()
#expect(result.contains("1,234,567"))
}
}
// MARK: - Double.toFileSize Tests
struct FileSizeTests {
@Test func bytesSize() {
let result = 512.0.toFileSize()
#expect(result == "512.0 B")
}
@Test func kilobytesSize() {
let result = 2048.0.toFileSize()
#expect(result == "2.0 KB")
}
@Test func megabytesSize() {
let result = (5.0 * 1024 * 1024).toFileSize()
#expect(result == "5.0 MB")
}
@Test func gigabytesSize() {
let result = (2.5 * 1024 * 1024 * 1024).toFileSize()
#expect(result == "2.5 GB")
}
@Test func zeroBytes() {
let result = 0.0.toFileSize()
#expect(result == "0.0 B")
}
}
// MARK: - Double.rounded Tests
struct DoubleRoundedTests {
@Test func roundToTwoPlaces() {
#expect(3.14159.rounded(to: 2) == 3.14)
}
@Test func roundToZeroPlaces() {
#expect(3.7.rounded(to: 0) == 4.0)
}
@Test func roundToOnePlaceDown() {
#expect(3.14.rounded(to: 1) == 3.1)
}
@Test func roundToOnePlaceUp() {
#expect(3.15.rounded(to: 1) == 3.2)
}
@Test func zeroRoundsToZero() {
#expect(0.0.rounded(to: 3) == 0.0)
}
}
// MARK: - Double.toPercentage Tests
struct PercentageTests {
@Test func fiftyPercent() {
let result = 50.0.toPercentage()
#expect(result.contains("50"))
#expect(result.contains("%"))
}
@Test func zeroPercent() {
let result = 0.0.toPercentage()
#expect(result.contains("0"))
#expect(result.contains("%"))
}
@Test func hundredPercent() {
let result = 100.0.toPercentage()
#expect(result.contains("100"))
}
}
// MARK: - Int.pluralSuffix Tests
struct PluralSuffixTests {
@Test func singularNoSuffix() {
#expect(1.pluralSuffix() == "")
}
@Test func pluralDefaultSuffix() {
#expect(2.pluralSuffix() == "s")
}
@Test func zeroIsPlural() {
#expect(0.pluralSuffix() == "s")
}
@Test func customSuffixes() {
#expect(1.pluralSuffix("y", "ies") == "y")
#expect(3.pluralSuffix("y", "ies") == "ies")
}
}
// MARK: - Int.toFileSize Tests
struct IntFileSizeTests {
@Test func intBytesToFileSize() {
let result = 1024.toFileSize()
#expect(result == "1.0 KB")
}
@Test func intZeroBytes() {
let result = 0.toFileSize()
#expect(result == "0.0 B")
}
}