assertEquals('#1e293b', View::kontrastfarbe('#ffffff'), 'Heller Hintergrund → dunkle Schrift'); $this->assertEquals('#ffffff', View::kontrastfarbe('#000000'), 'Dunkler Hintergrund → helle Schrift'); // Ungültige/zu kurze Werte liefern die Standardfarbe statt einer // stillen Rechnung auf 0 (die vormals immer "hell" ergeben hätte). $this->assertEquals('#1e293b', View::kontrastfarbe(''), 'Leerer Wert → Standardfarbe'); $this->assertEquals('#1e293b', View::kontrastfarbe('abc'), 'Wert ohne # → Standardfarbe'); $this->assertEquals('#1e293b', View::kontrastfarbe('#xyz123'), 'Ungültiges Hex → Standardfarbe'); // Dreistellige Kurzform wird korrekt expandiert: #abc → #aabbcc, // Helligkeit (0.299*170+0.587*187+0.114*204=182.9) > 128 → dunkle Schrift $this->assertEquals('#1e293b', View::kontrastfarbe('#abc'), 'Kurzform #abc wird expandiert'); // Eigene Standardfarben werden respektiert $this->assertEquals('dunkel', View::kontrastfarbe('#ffffff', 'dunkel', 'hell'), 'Eigene Standardfarben (hell)'); $this->assertEquals('dunkel', View::kontrastfarbe('', 'dunkel', 'hell'), 'Eigene Standardfarben (ungültig)'); $accounts = [ ['kontonummer' => '4400', 'kontenart' => 'Betriebseinnahme'], ['kontonummer' => '1000', 'kontenart' => 'Zahlungskonto'], // Kasse ['kontonummer' => '1200', 'kontenart' => 'Zahlungskonto'], // Bank 1 ['kontonummer' => '1299', 'kontenart' => 'Zahlungskonto'], // Grenzwert oben ['kontonummer' => '1300', 'kontenart' => 'Zahlungskonto'], // außerhalb ['kontonummer' => '1800', 'kontenart' => 'Privat'], ]; $ohneFilter = View::gruppiereKonten($accounts); $this->assertEquals(6, array_sum(array_map('count', $ohneFilter)), 'Ohne Filter enthält gruppiereKonten() alle Konten'); $this->assertEquals(4, count($ohneFilter['Zahlungskonto']), 'Ohne Filter bleiben alle Zahlungskonten in der Gruppe'); $this->assertEquals(1, count($ohneFilter['Betriebseinnahme']), 'Andere Kontenarten bleiben unangetastet'); $this->assertEquals(1, count($ohneFilter['Privat']), 'Andere Kontenarten bleiben unangetastet'); $mitFilter = View::gruppiereKonten($accounts, true); $this->assertEquals( ['1200', '1299'], array_column($mitFilter['Zahlungskonto'], 'kontonummer'), 'Mit Filter bleiben nur Zahlungskonten 1200–1299' ); $this->assertEquals(1, count($mitFilter['Betriebseinnahme']), 'Filter lässt andere Kontenarten unangetastet'); $this->assertEquals(1, count($mitFilter['Privat']), 'Filter lässt andere Kontenarten unangetastet'); } }