1# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
2#
3# Licensed under the Apache License 2.0 (the "License").  You may not use
4# this file except in compliance with the License.  You can obtain a copy
5# in the file LICENSE in the source distribution or at
6# https://www.openssl.org/source/license.html
7
8package OpenSSL::Test::Simple;
9
10use strict;
11use warnings;
12
13use Exporter;
14use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
15$VERSION = "0.2";
16@ISA = qw(Exporter);
17@EXPORT = qw(simple_test);
18
19=head1 NAME
20
21OpenSSL::Test::Simple - a few very simple test functions
22
23=head1 SYNOPSIS
24
25  use OpenSSL::Test::Simple;
26
27  simple_test("my_test_name", "destest", "des");
28
29=head1 DESCRIPTION
30
31Sometimes, the functions in L<OpenSSL::Test> are quite tedious for some
32repetitive tasks.  This module provides functions to make life easier.
33You could call them hacks if you wish.
34
35=cut
36
37use OpenSSL::Test;
38use OpenSSL::Test::Utils;
39
40=over 4
41
42=item B<simple_test NAME, PROGRAM, ALGORITHM>
43
44Runs a test named NAME, running the program PROGRAM with no arguments,
45to test the algorithm ALGORITHM.
46
47A complete recipe looks like this:
48
49  use OpenSSL::Test::Simple;
50
51  simple_test("test_bf", "bftest", "bf");
52
53=back
54
55=cut
56
57# args:
58#  name			(used with setup())
59#  algorithm		(used to check if it's at all supported)
60#  name of binary	(the program that does the actual test)
61sub simple_test {
62    my ($name, $prgr, @algos) = @_;
63
64    setup($name);
65
66    if (scalar(disabled(@algos))) {
67	if (scalar(@algos) == 1) {
68	    plan skip_all => $algos[0]." is not supported by this OpenSSL build";
69	} else {
70	    my $last = pop @algos;
71	    plan skip_all => join(", ", @algos)." and $last are not supported by this OpenSSL build";
72	}
73    }
74
75    plan tests => 1;
76
77    ok(run(test([$prgr])), "running $prgr");
78}
79
80=head1 SEE ALSO
81
82L<OpenSSL::Test>
83
84=head1 AUTHORS
85
86Richard Levitte E<lt>levitte@openssl.orgE<gt> with inspiration
87from Rich Salz E<lt>rsalz@openssl.orgE<gt>.
88
89=cut
90
911;
92