Skip to content

Commit ffd3fef

Browse files
Koan-Botclaude
andcommitted
test: replace bare ok() with is()/like() and descriptive names in bignum.t
Add descriptive test names to all 64 tests in bignum.t: - check_datum() now accepts a $name parameter for each assertion - check_key_parameters() accepts a $label and generates per-parameter names - Standalone ok() comparisons migrated to is() for better diagnostics - Error pattern checks migrated from ok($@ =~ //) to like($@, qr//) This matches the test modernization done in format.t, padding.t, and rsa.t, giving clear failure messages instead of "not ok 42" with no context. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 59d7e70 commit ffd3fef

1 file changed

Lines changed: 32 additions & 30 deletions

File tree

t/bignum.t

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,30 @@ $INC{'Crypt/OpenSSL/Bignum.pm'}
77
? plan( tests => 64 )
88
: plan( skip_all => "Crypt::OpenSSL::Bignum required for bignum tests" );
99

10+
my @PARAM_NAMES = qw(n e d p q dmp1 dmq1 iqmp);
11+
1012
sub check_datum {
11-
my ( $p_expected, $p_actual ) = @_;
12-
ok(
13-
defined($p_expected)
14-
? $p_actual && $p_expected->equals($p_actual)
15-
: !defined($p_actual)
16-
);
13+
my ( $p_expected, $p_actual, $name ) = @_;
14+
if ( defined($p_expected) ) {
15+
ok( $p_actual && $p_expected->equals($p_actual), $name );
16+
}
17+
else {
18+
is( $p_actual, undef, $name );
19+
}
1720
}
1821

1922
sub check_key_parameters # runs 8 tests
2023
{
21-
my ( $p_rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ) = @_;
24+
my ( $p_rsa, $label, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ) = @_;
2225
my ( $rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp ) = $p_rsa->get_key_parameters();
2326

24-
check_datum( $n, $rn );
25-
check_datum( $e, $re );
26-
check_datum( $d, $rd );
27-
check_datum( $p, $rp );
28-
check_datum( $q, $rq );
29-
check_datum( $dmp1, $rdmp1 );
30-
check_datum( $dmq1, $rdmq1 );
31-
check_datum( $iqmp, $riqmp );
27+
my @expected = ( $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
28+
my @actual = ( $rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp );
29+
30+
for my $i ( 0 .. 7 ) {
31+
check_datum( $expected[$i], $actual[$i],
32+
"$label: $PARAM_NAMES[$i] matches expected" );
33+
}
3234
}
3335

3436
{
@@ -44,50 +46,50 @@ sub check_key_parameters # runs 8 tests
4446
my $iqmp = $q->mod_inverse( $p, $ctx );
4547

4648
my $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e, $d, $p, $q );
47-
ok($rsa);
49+
ok( $rsa, "new_key_from_parameters(n,e,d,p,q) returns an object" );
4850

4951
$rsa->use_no_padding();
5052

5153
my $plaintext = pack( 'C*', 100, 100, 100, 12 );
5254
my $ciphertext = Crypt::OpenSSL::Bignum->new_from_bin($plaintext)->mod_exp( $e, $n, $ctx )->to_bin();
53-
check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
55+
check_key_parameters( $rsa, "full key", $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
5456

55-
ok( $rsa->encrypt($plaintext) eq $ciphertext );
56-
ok( $rsa->decrypt($ciphertext) eq $plaintext );
57+
is( $rsa->encrypt($plaintext), $ciphertext, "encrypt produces expected ciphertext" );
58+
is( $rsa->decrypt($ciphertext), $plaintext, "decrypt recovers original plaintext" );
5759

5860
my $rsa_pub = Crypt::OpenSSL::RSA->new_public_key( $rsa->get_public_key_string() );
5961

6062
$rsa_pub->use_no_padding();
61-
ok( $rsa->private_encrypt($ciphertext) eq $plaintext );
62-
ok( $rsa_pub->public_decrypt($plaintext) eq $ciphertext );
63+
is( $rsa->private_encrypt($ciphertext), $plaintext, "private_encrypt produces expected plaintext" );
64+
is( $rsa_pub->public_decrypt($plaintext), $ciphertext, "public_decrypt produces expected ciphertext" );
6365

6466
my @pub_parameters = $rsa_pub->get_key_parameters();
65-
ok( scalar(@pub_parameters) == 8 );
67+
is( scalar(@pub_parameters), 8, "public key returns 8 parameters" );
6668

67-
check_key_parameters( $rsa_pub, $n, $e );
69+
check_key_parameters( $rsa_pub, "public key", $n, $e );
6870

6971
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e, $d, $p );
70-
check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
72+
check_key_parameters( $rsa, "from (n,e,d,p)", $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
7173

7274
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e, $d, undef, $q );
73-
check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
75+
check_key_parameters( $rsa, "from (n,e,d,undef,q)", $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
7476

7577
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e );
76-
check_key_parameters( $rsa, $n, $e );
78+
check_key_parameters( $rsa, "from (n,e)", $n, $e );
7779

7880
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e, $d );
79-
check_key_parameters( $rsa, $n, $e, $d );
81+
check_key_parameters( $rsa, "from (n,e,d)", $n, $e, $d );
8082

8183
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters( $n, $e, undef, $p );
82-
check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
84+
check_key_parameters( $rsa, "from (n,e,undef,p)", $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp );
8385

8486
eval {
8587
Crypt::OpenSSL::RSA->new_key_from_parameters(
8688
$n->sub( Crypt::OpenSSL::Bignum->one() ),
8789
$e, $d, undef, $q
8890
);
8991
};
90-
ok( $@ =~ /OpenSSL error: p not prime/ );
92+
like( $@, qr/OpenSSL error: p not prime/, "bad n with q triggers 'p not prime' error" );
9193

9294
#try again, to make sure the error queue was properly flushed
9395
eval {
@@ -96,5 +98,5 @@ sub check_key_parameters # runs 8 tests
9698
$e, $d, undef, $q
9799
);
98100
};
99-
ok( $@ =~ /OpenSSL error: p not prime/ );
101+
like( $@, qr/OpenSSL error: p not prime/, "error queue flushed: repeat triggers same error" );
100102
}

0 commit comments

Comments
 (0)