expectException(Bech32Exception::class); $this->expectExceptionMessage($exceptionMsg); \BitWasp\Bech32\decode($bech32); } /** * @return array */ public function validChecksumProvider() { return [ ["A12UEL5L"], ["a12uel5l"], ["an83characterlonghumanreadablepartthatcontainsthenumber1andtheexcludedcharactersbio1tt5tgs"], ["abcdef1qpzry9x8gf2tvdw0s3jn54khce6mua7lmqqqxw"], ["11qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqc8247j"], ["split1checkupstagehandshakeupstreamerranterredcaperred2y9e3w"], ["?1ezyfcl"], ]; } /** * https://github.com/sipa/bech32/blob/master/ref/python/tests.py#L90 * @param string $hasValidChecksum * @dataProvider validChecksumProvider */ public function testValidChecksum($hasValidChecksum) { \BitWasp\Bech32\decode($hasValidChecksum); $pos = strrpos($hasValidChecksum, "1"); $invalidChecksum = substr($hasValidChecksum, 0, $pos+1) . chr(ord($hasValidChecksum[$pos+1])^1) . substr($hasValidChecksum, $pos+2); $this->expectException(Bech32Exception::class); \BitWasp\Bech32\decode($invalidChecksum); } /** * @return array */ public function invalidChecksumProvider() { return [ [" 1nwldj5"], ["\x7f"."1axkwrx"], ["an84characterslonghumanreadablepartthatcontainsthenumber1andtheexcludedcharactersbio1569pvx"], ["pzry9x0s0muk"], ["1pzry9x0s0muk"], ["x1b4n0q5v"], ["li1dgmt3"], ["de1lg7wt"."\xff"], ]; } /** * https://github.com/sipa/bech32/blob/master/ref/python/tests.py#L100 * @param string $hasValidChecksum * @dataProvider invalidChecksumProvider */ public function testInvalidChecksum($hasValidChecksum) { $this->expectException(Bech32Exception::class); \BitWasp\Bech32\decode($hasValidChecksum); } }