Quelltext des aktuellen Standes
<?php
declare(strict_types=1);
use OpenNIT\Core\MacAddress;
/**
* Deckt die zentrale MAC-Normalisierung ab (löst die zuvor mehrfach
* reimplementierte Logik in UniFiController/IpamManager ab).
*/
return static function (): void {
test('normalize entfernt Trennzeichen und wandelt in lowercase', function () {
assertSame('001a2b3c4d5e', MacAddress::normalize('00:1A:2B:3C:4D:5E'));
assertSame('001a2b3c4d5e', MacAddress::normalize('00-1a-2b-3c-4d-5e'));
assertSame('001a2b3c4d5e', MacAddress::normalize('001a.2b3c.4d5e'));
assertSame('001a2b3c4d5e', MacAddress::normalize('001A2B3C4D5E'));
});
test('normalize toleriert per Barcode-Scanner angehängte Steuerzeichen', function () {
assertSame('001a2b3c4d5e', MacAddress::normalize("001A2B3C4D5E\r\n"));
assertSame('001a2b3c4d5e', MacAddress::normalize(' 001A2B3C4D5E '));
});
test('normalize liefert null bei ungültiger Länge oder null', function () {
assertSame(null, MacAddress::normalize(null));
assertSame(null, MacAddress::normalize(''));
assertSame(null, MacAddress::normalize('00:1A:2B')); // zu kurz
assertSame(null, MacAddress::normalize('001A2B3C4D5E6F')); // zu lang
});
test('strip liefert Hex-Folge ohne Längenprüfung', function () {
assertSame('001a2b', MacAddress::strip('00:1A:2B'));
assertSame('', MacAddress::strip(null));
assertSame('', MacAddress::strip('xx:yy'));
});
test('equals vergleicht formatunabhängig', function () {
assertTrue(MacAddress::equals('00:1A:2B:3C:4D:5E', '001a2b3c4d5e'));
assertTrue(MacAddress::equals('00-1A-2B-3C-4D-5E', '001A.2B3C.4D5E'));
assertFalse(MacAddress::equals('00:1A:2B:3C:4D:5E', '00:1A:2B:3C:4D:5F'));
assertFalse(MacAddress::equals(null, '001a2b3c4d5e'));
assertFalse(MacAddress::equals('kurz', 'kurz'));
});
test('format erzeugt aa:bb:cc:dd:ee:ff', function () {
assertSame('00:1a:2b:3c:4d:5e', MacAddress::format('001A2B3C4D5E'));
assertSame('00:1a:2b:3c:4d:5e', MacAddress::format('00-1a-2b-3c-4d-5e'));
});
test('format gibt ungültige Eingabe unverändert zurück', function () {
assertSame('keine-mac', MacAddress::format('keine-mac'));
});
};