summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/t/run_test.t
blob: 8288f19ab8a32642dbc5cc872389699ea2a75856 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
use strict;

use Test::Tester;

use Data::Dumper qw(Dumper);

my $test = Test::Builder->new;
$test->plan(tests => 54);

my $cap;

{
	$cap = Test::Tester->capture;
	my ($prem, @results) = run_tests(
		sub {$cap->ok(1, "run pass")}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "", "run pass no prem");
	$test->is_num(scalar (@results), 1, "run pass result count");

	my $res = $results[0];

	$test->is_eq($res->{name}, "run pass", "run pass name");
	$test->is_eq($res->{ok}, 1, "run pass ok");
	$test->is_eq($res->{actual_ok}, 1, "run pass actual_ok");
	$test->is_eq($res->{reason}, "", "run pass reason");
	$test->is_eq($res->{type}, "", "run pass type");
	$test->is_eq($res->{diag}, "", "run pass diag");
	$test->is_num($res->{depth}, 0, "run pass depth");
}

{
	my ($prem, @results) = run_tests(
		sub {$cap->ok(0, "run fail")}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "", "run fail no prem");
	$test->is_num(scalar (@results), 1, "run fail result count");

	my $res = $results[0];

	$test->is_eq($res->{name}, "run fail", "run fail name");
	$test->is_eq($res->{actual_ok}, 0, "run fail actual_ok");
	$test->is_eq($res->{ok}, 0, "run fail ok");
	$test->is_eq($res->{reason}, "", "run fail reason");
	$test->is_eq($res->{type}, "", "run fail type");
	$test->is_eq($res->{diag}, "", "run fail diag");
	$test->is_num($res->{depth}, 0, "run fail depth");
}

{
	my ($prem, @results) = run_tests(
		sub {$cap->skip("just because")}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "", "skip no prem");
	$test->is_num(scalar (@results), 1, "skip result count");

	my $res = $results[0];

	$test->is_eq($res->{name}, "", "skip name");
	$test->is_eq($res->{actual_ok}, 1, "skip actual_ok");
	$test->is_eq($res->{ok}, 1, "skip ok");
	$test->is_eq($res->{reason}, "just because", "skip reason");
	$test->is_eq($res->{type}, "skip", "skip type");
	$test->is_eq($res->{diag}, "", "skip diag");
	$test->is_num($res->{depth}, 0, "skip depth");
}

{
	my ($prem, @results) = run_tests(
		sub {$cap->todo_skip("just because")}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "", "todo_skip no prem");
	$test->is_num(scalar (@results), 1, "todo_skip result count");

	my $res = $results[0];

	$test->is_eq($res->{name}, "", "todo_skip name");
	$test->is_eq($res->{actual_ok}, 0, "todo_skip actual_ok");
	$test->is_eq($res->{ok}, 1, "todo_skip ok");
	$test->is_eq($res->{reason}, "just because", "todo_skip reason");
	$test->is_eq($res->{type}, "todo_skip", "todo_skip type");
	$test->is_eq($res->{diag}, "", "todo_skip diag");
	$test->is_num($res->{depth}, 0, "todo_skip depth");
}

{
	my ($prem, @results) = run_tests(
		sub {$cap->diag("run diag")}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "run diag\n", "run diag prem");
	$test->is_num(scalar (@results), 0, "run diag result count");
}

{
	my ($prem, @results) = run_tests(
		sub {
			$cap->ok(1, "multi pass");
			$cap->diag("multi pass diag1");
			$cap->diag("multi pass diag2");
			$cap->ok(0, "multi fail");
			$cap->diag("multi fail diag");
		}
	);

	local $Test::Builder::Level = 0;

	$test->is_eq($prem, "", "run multi no prem");
	$test->is_num(scalar (@results), 2, "run multi result count");

	my $res_pass = $results[0];

	$test->is_eq($res_pass->{name}, "multi pass", "run multi pass name");
	$test->is_eq($res_pass->{actual_ok}, 1, "run multi pass actual_ok");
	$test->is_eq($res_pass->{ok}, 1, "run multi pass ok");
	$test->is_eq($res_pass->{reason}, "", "run multi pass reason");
	$test->is_eq($res_pass->{type}, "", "run multi pass type");
	$test->is_eq($res_pass->{diag}, "multi pass diag1\nmulti pass diag2\n",
		"run multi pass diag");
	$test->is_num($res_pass->{depth}, 0, "run multi pass depth");

	my $res_fail = $results[1];

	$test->is_eq($res_fail->{name}, "multi fail", "run multi fail name");
	$test->is_eq($res_pass->{actual_ok}, 1, "run multi fail actual_ok");
	$test->is_eq($res_fail->{ok}, 0, "run multi fail ok");
	$test->is_eq($res_pass->{reason}, "", "run multi fail reason");
	$test->is_eq($res_pass->{type}, "", "run multi fail type");
	$test->is_eq($res_fail->{diag}, "multi fail diag\n", "run multi fail diag");
	$test->is_num($res_pass->{depth}, 0, "run multi fail depth");
}