# vi:fdm=marker fdl=0 syntax=perl: use strict; use Test; if( defined $ENV{SKIP_ALL_BUT} ) { unless( $0 =~ m/\Q$ENV{SKIP_ALL_BUT}\E/ ) { plan tests => 1; skip(1); exit 0; } } use Crypt::PBC; my $curve = Crypt::PBC->new("params_d.txt"); my @lhs = ( $curve->init_G1, $curve->init_G2, $curve->init_GT, $curve->init_Zr ); my @rhs = ( $curve->init_G1, $curve->init_G2, $curve->init_GT, $curve->init_Zr ); my $epochs = 3; plan tests => ( ((int @lhs) * 5 * $epochs) ); for my $i ( 1 .. $epochs ) { for my $i ( 0 .. $#lhs ) { $rhs[$i]->random; $lhs[$i]->set( $rhs[$i] )->square; my $sc = $lhs[$i]->clone; $lhs[$i]->set( $rhs[$i] )->double; my $dc = $lhs[$i]->clone; $lhs[$i]->set( $rhs[$i] )->halve; my $hc = $lhs[$i]->clone; $lhs[$i]->set( $rhs[$i] ); $lhs[$i]->neg; my $nc = $lhs[$i]->clone; $lhs[$i]->set( $rhs[$i] ); $lhs[$i]->invert; my $ic = $lhs[$i]->clone; $lhs[$i]->square( $rhs[$i] ); ok( $lhs[$i]->is_eq( $sc ) ); $lhs[$i]->double( $rhs[$i] ); ok( $lhs[$i]->is_eq( $dc ) ); $lhs[$i]->halve( $rhs[$i] ); ok( $lhs[$i]->is_eq( $hc ) ); $lhs[$i]->neg( $rhs[$i] ); ok( $lhs[$i]->is_eq( $nc ) ); $lhs[$i]->invert( $rhs[$i] ); ok( $lhs[$i]->is_eq( $ic ) ); } }