toBeBase64() ->and('Zm9vYg==')->toBeBase64() ->and('Zm9vYmE=')->toBeBase64() ->and('Zm9vYmFy')->toBeBase64() ->and('')->toBeBase64(); }); test('failures', function (): void { expect('not-base64!')->toBeBase64(); })->throws(ExpectationFailedException::class); test('failures with invalid padding', function (): void { expect('AAA')->toBeBase64(); })->throws(ExpectationFailedException::class); test('failures with padding only', function (): void { expect('====')->toBeBase64(); })->throws(ExpectationFailedException::class); test('failures with malformed input', function (): void { expect('!!invalid!!')->toBeBase64(); })->throws(ExpectationFailedException::class); test('failures with invalid type', function (): void { expect([])->toBeBase64(); })->throws(InvalidExpectationValue::class, 'This expectation may only be used on a value of type [string].'); test('failures with custom message', function (): void { expect('!!invalid!!')->toBeBase64('oh no!'); })->throws(ExpectationFailedException::class, 'oh no!'); test('not failures', function (): void { expect('Zm9v')->not->toBeBase64(); })->throws(ExpectationFailedException::class);