xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm (revision 256a93a44f36679bee503f12e49566c2183f6181)
1*256a93a4Safresh1# -*- mode: perl; -*-
25759b3d2Safresh1
35759b3d2Safresh1package Math::BigInt::Lib::TestUtil;
45759b3d2Safresh1
55759b3d2Safresh1use strict;
65759b3d2Safresh1use warnings;
75759b3d2Safresh1
85759b3d2Safresh1use Exporter;
95759b3d2Safresh1
105759b3d2Safresh1our @ISA       = qw< Exporter >;
115759b3d2Safresh1our @EXPORT_OK = qw< randstr >;
125759b3d2Safresh1
135759b3d2Safresh1# randstr NUM, BASE
145759b3d2Safresh1#
155759b3d2Safresh1# Generate a string representing a NUM digit number in base BASE.
165759b3d2Safresh1
175759b3d2Safresh1sub randstr {
185759b3d2Safresh1    die "randstr: wrong number of input arguments\n"
195759b3d2Safresh1      unless @_ == 2;
205759b3d2Safresh1
215759b3d2Safresh1    my $n = shift;
225759b3d2Safresh1    my $b = shift;
235759b3d2Safresh1
245759b3d2Safresh1    die "randstr: first input argument must be >= 0"
255759b3d2Safresh1      unless $n >= 0;
265759b3d2Safresh1    die "randstr: second input argument must be in the range 2 .. 36\n"
275759b3d2Safresh1      unless 2 <= $b && $b <= 36;
285759b3d2Safresh1
295759b3d2Safresh1    return '' if $n == 0;
305759b3d2Safresh1
315759b3d2Safresh1    my @dig = (0 .. 9, 'a' .. 'z');
325759b3d2Safresh1
335759b3d2Safresh1    my $str = $dig[ 1 + int rand ($b - 1) ];
345759b3d2Safresh1    $str .= $dig[ int rand $b ] for 2 .. $n;
355759b3d2Safresh1
365759b3d2Safresh1    return $str;
375759b3d2Safresh1}
385759b3d2Safresh1
395759b3d2Safresh11;
40