Make tests public. Rewrite most tests. Add tests.
[pintos-anon] / src / tests / threads / priority-fifo.ck
1 # -*- perl -*-
2 use strict;
3 use warnings;
4 use tests::tests;
5
6 our ($test);
7 my (@output) = read_text_file ("$test.output");
8
9 common_checks (@output);
10
11 my ($thread_cnt) = 16;
12 my ($iter_cnt) = 16;
13 my (@order);
14 my (@t) = (-1) x $thread_cnt;
15
16 my (@iterations) = grep (/iteration:/, @output);
17 fail "No iterations found in output.\n" if !@iterations;
18
19 my (@numbering) = $iterations[0] =~ /(\d+)/g;
20 fail "First iteration does not list exactly $thread_cnt threads.\n"
21   if @numbering != $thread_cnt;
22
23 my (@sorted_numbering) = sort { $a <=> $b } @numbering;
24 for my $i (0...$#sorted_numbering) {
25     if ($sorted_numbering[$i] != $i) {
26         fail "First iteration does not list all threads "
27           . "0...$#sorted_numbering\n";
28     }
29 }
30
31 for my $i (1...$#iterations) {
32     if ($iterations[$i] ne $iterations[0]) {
33         fail "Iteration $i differs from iteration 0\n";
34     }
35 }
36
37 fail "$iter_cnt iterations expected but " . scalar (@iterations)  . " found\n"
38   if $iter_cnt != @iterations;
39
40 pass;