Files
ios-app/SharedLib/Tests/SharedLibTests/Extension/DoubleTests.swift
T
Joseph Radford 0c182f2eb1 Bugfix/reading time format issue 451 (#456)
* Fix reading time display affected by 12/24-hour system setting (#451)

Reading time was incorrectly displayed as time-of-day (e.g., "12:45:00 AM" on 12-hour format devices) instead of as a duration. This occurred because DateFormatter was being used to format what should be a duration value, causing it to apply system time format preferences.

Replaced DateFormatter with simple duration calculation that formats as HH:MM:SS regardless of device settings. Added comprehensive unit tests covering basic durations, hour boundaries, fractional minutes, and edge cases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add GitHub Action to run SharedLib tests

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-05 08:17:25 +01:00

36 lines
1.2 KiB
Swift

import XCTest
class DoubleTests: XCTestCase {
func testReadingTime() {
// Basic minute tests
XCTAssertEqual("00:01:00", 1.0.readingTime)
XCTAssertEqual("00:02:00", 2.0.readingTime)
XCTAssertEqual("00:05:00", 5.0.readingTime)
XCTAssertEqual("00:10:00", 10.0.readingTime)
XCTAssertEqual("00:30:00", 30.0.readingTime)
XCTAssertEqual("00:45:00", 45.0.readingTime)
// Hour boundary tests
XCTAssertEqual("01:00:00", 60.0.readingTime)
XCTAssertEqual("01:01:00", 61.0.readingTime)
XCTAssertEqual("01:30:00", 90.0.readingTime)
// Multiple hours
XCTAssertEqual("02:00:00", 120.0.readingTime)
XCTAssertEqual("02:15:00", 135.0.readingTime)
XCTAssertEqual("03:45:00", 225.0.readingTime)
// Fractional minutes (should truncate seconds properly)
XCTAssertEqual("00:01:30", 1.5.readingTime)
XCTAssertEqual("00:02:15", 2.25.readingTime)
XCTAssertEqual("00:05:45", 5.75.readingTime)
// Edge cases
XCTAssertEqual("00:00:00", 0.0.readingTime)
// Long reading times
XCTAssertEqual("10:00:00", 600.0.readingTime)
XCTAssertEqual("24:00:00", 1440.0.readingTime)
}
}