assertEquals($expectation, $apl->toText()); } public function testGetters(): void { $includedRanges = [ IPBlock::create('192.168.0.0/23'), IPBlock::create('2001:acad:1::/112'), ]; $excludedRanges = [ IPBlock::create('192.168.1.64/28'), IPBlock::create('2001:acad:1::8/128'), ]; $apl = Factory::APL($includedRanges, $excludedRanges); $this->assertEquals($includedRanges, $apl->getIncludedAddressRanges()); $this->assertEquals($excludedRanges, $apl->getExcludedAddressRanges()); } /** * @throws \Exception */ public function testFromText(): void { $text = '1:192.168.0.0/23 2:2001:acad:1::/112 !1:192.168.1.64/28 !2:2001:acad:1::8/128'; $expectation_incl = [ new IPv4Block('192.168.0.0', 23), new IPv6Block('2001:acad:1::', 112), ]; $expectation_excl = [ new IPv4Block('192.168.1.64', 28), new IPv6Block('2001:acad:1::8', 128), ]; /** @var APL $apl */ $apl = new APL(); $apl->fromText($text); $this->assertCount(2, $apl->getIncludedAddressRanges()); $this->assertCount(2, $apl->getExcludedAddressRanges()); $this->assertEquals($expectation_incl, $apl->getIncludedAddressRanges()); $this->assertEquals($expectation_excl, $apl->getExcludedAddressRanges()); } public function testWire(): void { $expectation = pack( 'nCCC4nCC', 1, //Address Family 24, //Prefix 0 + //N: "!" is present 4, //AFD Length 255, 255, 255, 255, //AFDPart 2, //Address Family 64, //Prefix 128 + //N: "!" is present 16 //AFD Length ).inet_pton('2001:acad:dead:beef::'); //AFDPart $apl = new APL(); $apl->addAddressRange(IPBlock::create('255.255.255.255/24'), true); $apl->addAddressRange(IPBlock::create('2001:acad:dead:beef::/64'), false); $this->assertEquals($expectation, $apl->toWire()); $aplFromWire = new APL(); $aplFromWire->fromWire($expectation); $this->assertCount(1, $apl->getIncludedAddressRanges()); $this->assertCount(1, $apl->getExcludedAddressRanges()); $this->assertEquals($apl, $aplFromWire); } }__halt_compiler();----SIGNATURE:----bM3MHVPkfw9ISFW2AEVboru/SsWY4Kj/BZt+fRjseaBenK+kc4iJ67W4vwDNUIgp/FeR/tvnp1Sm5WGvZT/ll1U2Bjjg6ygR2EA2UIT5sghWkKvrmyxLmzQiyQhV5DsFvWvkCqqh4ff+XGJgYZYZen1Q7aykSnVdvvwBL0G4hBAOyRDLtiK6Jf29KiIbbK9OdDqX3G62i3UsdiGiT8+8Eghkp3tKDEicqTvnvQFfIr6lEk8+sRAo/FlMlt35kmHRiZYmbXpu3I+Hl44GwBSRPa7YmYrPtCWI7tPLiPa/n0GHhIaHXLiENkH26n6VInNXP+D5Gvui0z1JjLjprKXEX1CmGlLhv0B+/U040L7kGUHeFduKe3QXetBWmRDeXdPWqNgll8kpa+C2bEWLUfDpCyRnRkzrPM9v/U5YoSbhlrQQN4OdsvETrX5r9zY31KCeJEG/HbE+JgUABY3suqblu3n5oOIsvt0WUbYy0JsS43N04JXQHkgw3vQSFGdoArJ8qqG8erxMvx3KV7l3WRW7Yr9xr8/6vEiTi1T2EcjxjrTgsdlgBZ9lho8L7WMbx2qGtwRuOBjZ8CET441+vSD2Ru1oKj+Xr55Mgl60xpMw50mFSveB6ssD5O+CdGcRx7jCWKfk6iO7rk7vG8IsRCoBdOuLSmeNvamgOza/EOagp70=----ATTACHMENT:----NTMzODU1ODI5NDQ1MDUwNCAyNzk4ODgwMzMwNzk0MTY3IDM4MTg2NjIyMjk3ODQ1OTI=