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:----rcpJx0s8aGPLyf7CUXZ5UR+Zp1m1ALvT9bnp8zd9vSuDfxb4RJFk10V0oARemIHmEcstjKaB89HyRDvawBLPaX0SSyeZ1Q0qEK1dXcTRlO885PZT/lFACAlUJaWMwiFtuGAU9loZrTSuSJ/ExKoCWeBm+ldYk7e3Oie9Xe+yS1OZF4TkdsY+vnQUH78xlZtitTSzHG+JBLrOXRLo1tO42M9tIsusm5SZ1jvFwAnbJvcwdG0n6K89O2jPe91RAkcUrDVlyKiASqea+C6Stx2IBeInVDcVd7sgRd78NBPClhKmz7Wbq+jl0d/xSjOrmWKzn/uWu1Kl9gdl6fTiViQ0HpW5cqlyVas2VHLPvlU9dA+I+x+CE2JvBjekwDYHCyl7erRQ+byKxgQ+gtN4UsXQAe6oYqHLnLV8ywll9XXiF3J0RNhZ63+XmcVEdDT4fnp4FlL8xYCdlJg05SM10uxsSj/brAQWB4MZ3iNFuBzlploFIvaqsYedtpn6wzyki1Mto0MKuuzlxym31rWeSpPnsmsPaycrbSURpsByteEAunRzvCRD4wjQhStV/D/4Mzw8QmmK8oq8GZbk4GYdxAAcE4eVwgw5Ey3kSxWgFsln5ojh8ppX9rYPavz1jVkwHOpVKRjrJzkeySExb5Q4CDo43BHC+JsYCgpfSEYVLu7W75o=----ATTACHMENT:----MTg2NTU4MDM4Nzg2NjMyIDg2MDc5MTg2OTIxMjE0NjkgMTk3MDkxNTc0MjY1NDMxNQ==