Blitz weiß mit Rand — und er fadet weiter

Beides, nicht eines von beiden: das Zeichen ist weiß mit dünnem dunklem
Rand, und beim Laden fadet es.

Der Rand ist dabei immer die Gegenfarbe zur Füllung. Damit bleibt das
Zeichen in jedem Moment des Fadens lesbar — über der hellen Füllung trägt
es der Rand, über dem leeren Teil die Füllung selbst.

Das Pausenzeichen ist niedriger als der Blitz. Es ist von Haus aus höher
gebaut und stieß oben und unten an den Rahmen des Akkus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-08-13 13:04:31 +02:00
parent 20963f53e2
commit 8545cc421c
2 changed files with 89 additions and 35 deletions

View File

@@ -194,3 +194,40 @@ struct BatteryBoltFadeTests {
#expect(BatteryGlyph.boltWhiteness(phase: 0.5) == 0)
}
}
@Suite("Umrandetes Zeichen")
struct BatteryOutlineTests {
private let glyph = CGRect(x: 10, y: 4, width: 8, height: 12)
@Test("Der Rand liegt außen herum und bleibt mittig")
func outlineSurroundsAndCentres() {
let outline = BatteryGlyph.outlineRect(glyph)
#expect(outline.minX < glyph.minX)
#expect(outline.maxX > glyph.maxX)
#expect(abs(outline.midX - glyph.midX) < 0.001)
#expect(abs(outline.midY - glyph.midY) < 0.001)
}
@Test("Er ist dünn")
func outlineIsThin() {
// Ein dicker Rand frisst das Zeichen auf.
#expect(BatteryGlyph.outlineRect(glyph).width - glyph.width <= 2.5)
}
@Test("Das Pausenzeichen ist niedriger als der Blitz")
func pauseIsShorter() {
// Es ist von Haus aus höher gebaut und stößt sonst oben und unten an
// den Rahmen des Akkus.
let bolt = BatteryGlyph.glyphHeight(for: .bolt, in: 12)
let paused = BatteryGlyph.glyphHeight(for: .paused, in: 12)
#expect(paused < bolt)
}
@Test("Beide bleiben im Akku")
func bothFitInside() {
for indicator in BatteryGlyph.Indicator.allCases {
#expect(BatteryGlyph.glyphHeight(for: indicator, in: 12) < 12)
}
}
}