this repo has no description
1import Foundation
2import Testing
3@testable import CodexBar
4
5@Suite
6struct LoadingPatternTests {
7 @Test
8 func valuesStayWithinBounds() {
9 for pattern in LoadingPattern.allCases {
10 for phase in stride(from: 0.0, through: Double.pi * 2, by: Double.pi / 6) {
11 let v = pattern.value(phase: phase)
12 #expect(v >= 0 && v <= 100, "pattern \(pattern) out of bounds at phase \(phase)")
13 }
14 }
15 }
16
17 @Test
18 func knightRiderPingPongs() {
19 let pattern = LoadingPattern.knightRider
20 let mid = pattern.value(phase: 0) // sin 0 = 0 => 50
21 let min = pattern.value(phase: -Double.pi / 2) // sin -pi/2 = -1 => 0
22 let max = pattern.value(phase: Double.pi / 2) // sin pi/2 = 1 => 100
23 #expect(min <= mid && mid <= max)
24 #expect(min == 0)
25 #expect(max == 100)
26 }
27
28 @Test
29 func secondaryOffsetDiffers() {
30 let pattern = LoadingPattern.cylon
31 let primary = pattern.value(phase: 0)
32 let secondary = pattern.value(phase: pattern.secondaryOffset)
33 #expect(primary != secondary, "secondary should be offset from primary")
34 }
35}