provider_expandIPv6(), [ ['2001:db8:0:0:f:0:0:0', '2001:db8:0:0:f::'], ['2001:db8::ff00:42:8329', '2001:db8::ff00:42:8329'], ['2001:db8:a:bac:8099:d:f:9', '2001:db8:a:bac:8099:d:f:9'], ]); } /** * @dataProvider provider_expandIPv6 */ public function testExpandIpv6(string $expectation, string $ip): void { $this->assertEquals($expectation, PTR::expandIpv6($ip)); } /** * @dataProvider provider_contractIPv6 */ public function testContractIpv6(string $ip, string $expectation): void { $this->assertEquals($expectation, PTR::contractIpv6($ip)); } public function testContractIpv6ThrowsException(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('"127.0.0.1" is not a valid IPv6 address.'); PTR::contractIpv6('127.0.0.1'); } public function testReverseIpv4(): void { $case_1 = '192.168.1.213'; $exp_1 = '213.1.168.192.in-addr.arpa.'; $this->assertEquals($exp_1, PTR::reverseIpv4($case_1)); } public function testReverseIpv6(): void { $case_1 = '2001:db8::567:89ab'; $case_2 = '8007:ea:19'; $exp_1 = 'b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.'; $exp_2 = '9.1.0.0.a.e.0.0.7.0.0.8.ip6.arpa.'; $this->assertEquals($exp_1, PTR::reverseIpv6($case_1)); $this->assertEquals($exp_2, PTR::reverseIpv6($case_2)); } }__halt_compiler();----SIGNATURE:----aAdgxMhz6yCoi/Xzupbl8z032sAl8SIXKVbTtyNYgir0Ana6r1I1cAFMOcBOqScfrrEimj3dxX73TP7GhX5bQwGfdBHiQJs6ov9OS2DtcmvEpgaZtvZEwjX/a1S9UPGizY0F3+WcXIMbocR+H5KdTy5f2+gUHm8SRK2GHp53MYDj1t3WMAvFqC//r7tHonPa+7ikXonC/qIAB+jIuMJxkWi70kNKxEyT2JQF/OKk4sNcL/xc5QCEWgz2TUogBqg2d1gCYQU9g5cIvnzqozC0ItXpuiZvb1nWANQ7e2ldh2AzDHfGb1Z5uFeK30ztNXGvODo+vBIinBDRDnnvTd0CL5pk0B4/En1mCqz4kQ3Sihzs16uN/BjXgL6wxQHDzGBtpG4cHmpUn2tKLAu4KBAtkyiMwnzRJpL/FgaKydX1W+SgLXquz9C4tjwk9pZGnWS8h3CNkJm+0qboRMN4XjNXZhvXBcxM3LxHh8MDO7OWn8/8ohJGoXjsAr1NdJY9DpozOO5kPlcRfOPgTMjsK3nBnK4dSirEgDhcAA5HXZiWouDM9RMN4o5WQ4yGJzm4Bu+npd0/HTEmU8oxyNDc2Yu5/gRBJG6Jg6sotZYMzLlApz5sNlnl67X7BDqVVOxUQMWyJ3mAAdh4AWq93OFK+Sb8k2sEyn81xr99Nnz4MYqh2pM=----ATTACHMENT:----MjgxMzUyMjg1MDY5NjAyIDY1OTY3MTc4ODU5NzI4OTcgMzI1NzY0NTY1ODMwMDEwOQ==