2013-10-19 06:17:47 +08:00
|
|
|
|
#!/usr/bin/perl
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
# This tests various features of feedgnuplot. Note that the tests look at actual
|
|
|
|
|
# plot output using the 'dumb' terminal, so any changes in gnuplot itself that
|
|
|
|
|
# change the way the output looks will show up as test failures. Hopefully this
|
|
|
|
|
# will not be a big deal
|
|
|
|
|
|
|
|
|
|
|
2013-10-19 06:17:47 +08:00
|
|
|
|
# require a threaded perl for my tests. This block lifted verbatim from the cpantesters wiki
|
|
|
|
|
BEGIN {
|
|
|
|
|
use Config;
|
|
|
|
|
if (! $Config{'useithreads'}) {
|
|
|
|
|
print("1..0 # Skip: Perl not compiled with 'useithreads'\n");
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
use Test::More tests => 16;
|
2013-10-19 06:17:47 +08:00
|
|
|
|
use Test::Script::Run 'is_script_output';
|
|
|
|
|
use File::Temp 'tempfile';
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
tryplot( testname => 'basic line plot',
|
|
|
|
|
cmd => 'seq 5',
|
|
|
|
|
options => [qw(--lines --points)],
|
|
|
|
|
refplot => <<'EOF' );
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 ++--+---+--+---+---+---+--+--+A
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
4.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
4 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
3.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
1.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
+* + + + + + + + +
|
|
|
|
|
1 A+--+---+--+---+---+---+--+--++
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
tryplot( testname => 'basic lines-only plot',
|
|
|
|
|
cmd => 'seq 5',
|
|
|
|
|
options => [qw(--lines)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
5 ++--+---+--+---+---+---+--+--+*
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
4.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
4 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
3.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
1.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
+* + + + + + + + +
|
|
|
|
|
1 *+--+---+--+---+---+---+--+--++
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'basic points-only plot',
|
|
|
|
|
cmd => 'seq 5',
|
|
|
|
|
options => [qw(--points)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
5 ++--+---+--+---+---+---+--+--+A
|
|
|
|
|
+ + + + + + + + +
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
4.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
4 ++ A ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
3.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
3 ++ A ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
2.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
2 ++ A ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
1.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
+ + + + + + + + +
|
|
|
|
|
1 A+--+---+--+---+---+---+--+--++
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
|
|
|
|
|
EOF
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
tryplot( testname => 'basic line plot with bounds',
|
|
|
|
|
cmd => 'seq 5',
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--xmin -10.5 --xmax 4.5 --ymin -0.5 --ymax 5.5)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
++---+----+---+---+---+----+---++
|
|
|
|
|
|+ + + + + + + +|
|
|
|
|
|
| |
|
|
|
|
|
5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| *
|
|
|
|
|
| *
|
|
|
|
|
| *|
|
|
|
|
|
4 ++ A+
|
|
|
|
|
| *|
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
1 ++ A ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
0 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
|+ + + + + + + +|
|
|
|
|
|
++---+----+---+---+---+----+---++
|
|
|
|
|
-10 -8 -6 -4 -2 0 2 4
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'basic line plot with bounds, square aspect ratio',
|
|
|
|
|
cmd => 'seq 5',
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--xmin -10.5 --xmax 4.5 --ymin -0.5 --ymax 5.5 --square)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
++---+----+---+---+---+----+---++
|
|
|
|
|
5 ++ + + + + + + ++
|
|
|
|
|
| *
|
|
|
|
|
4 ++ A+
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
2 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
1 ++ A ++
|
|
|
|
|
| |
|
|
|
|
|
0 ++ + + + + + + ++
|
|
|
|
|
++---+----+---+---+---+----+---++
|
|
|
|
|
-10 -8 -6 -4 -2 0 2 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'lines on both axes with labels, legends, titles',
|
|
|
|
|
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
'--legend', '0', 'data 0',
|
|
|
|
|
'--title', "Test plot",
|
|
|
|
|
qw(--y2 1 --y2label y2 --xlabel x --ylabel y --y2max 30)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
Test plot
|
|
|
|
|
y2
|
|
|
|
|
10 ++-+---+--+--+--+---+--+-+A 30
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| data 0 **A****|
|
|
|
|
|
| * |
|
|
|
|
|
9 ++ * |
|
|
|
|
|
| * +B 25
|
|
|
|
|
| * #|
|
|
|
|
|
| * #|
|
|
|
|
|
8 ++ A # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # ++ 20
|
|
|
|
|
7 ++ * # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * B |
|
|
|
|
|
6 ++ A # ++ 15
|
|
|
|
|
| * # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # |
|
|
|
|
|
5 ++ * # |
|
|
|
|
|
| * # ++ 10
|
|
|
|
|
| * B |
|
|
|
|
|
| * # |
|
|
|
|
|
4 ++ A # |
|
|
|
|
|
| * # |
|
|
|
|
|
| * # ++ 5
|
|
|
|
|
| * # |
|
|
|
|
|
3 ++ * #B |
|
|
|
|
|
| *## |
|
|
|
|
|
| *# |
|
|
|
|
|
B* + + + + + + + +
|
|
|
|
|
2 A+-+---+--+--+--+---+--+-++ 0
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
x
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'lines on both axes with labels, legends, titles; different styles',
|
|
|
|
|
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
|
|
|
|
|
options => ['--legend', '0', 'data 0',
|
|
|
|
|
'--title', "Test plot",
|
|
|
|
|
qw(--y2 1 --y2label y2 --xlabel x --ylabel y --y2max 30),
|
|
|
|
|
'--curvestyle', '0', 'with lines',
|
|
|
|
|
'--curvestyle', '1', 'with points ps 3 pt 7'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
Test plot
|
|
|
|
|
y2
|
|
|
|
|
10 ++-+---+--+--+--+---+--+-+* 30
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| data 0 *******|
|
|
|
|
|
| * |
|
|
|
|
|
9 ++ * |
|
|
|
|
|
| * +G 25
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
8 ++ * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * ++ 20
|
|
|
|
|
7 ++ * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * G |
|
|
|
|
|
6 ++ * ++ 15
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
5 ++ * |
|
|
|
|
|
| * ++ 10
|
|
|
|
|
| * G |
|
|
|
|
|
| * |
|
|
|
|
|
4 ++ * |
|
|
|
|
|
| * |
|
|
|
|
|
| * ++ 5
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ * G |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
G* + + + + + + + +
|
|
|
|
|
2 *+-+---+--+--+--+---+--+-++ 0
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
x
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'domain plot',
|
|
|
|
|
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
|
|
|
|
|
options => [qw(--lines --points), '--domain'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 ++--+---+---+---+--+---+---+--+A
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| *|
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
20 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| A |
|
|
|
|
|
15 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
10 ++ * ++
|
|
|
|
|
| A |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| ** |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
5 ++ * ++
|
|
|
|
|
| A |
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
| * |
|
|
|
|
|
|** |
|
|
|
|
|
A + + + + + + + +
|
|
|
|
|
0 ++--+---+---+---+--+---+---+--++
|
|
|
|
|
2 3 4 5 6 7 8 9 10
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'dataid plot',
|
|
|
|
|
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--dataid --autolegend)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
25 ++--+---+---+---+--+---+---+--+E
|
|
|
|
|
+ + + + + + + + +
|
|
|
|
|
| 2 **A*** |
|
|
|
|
|
| 4 ##B### |
|
|
|
|
|
| 6 $$C$$$ |
|
|
|
|
|
| 8 %%D%%% |
|
|
|
|
|
| 10 @@E@@@ |
|
|
|
|
|
20 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| D |
|
|
|
|
|
15 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
10 ++ ++
|
|
|
|
|
| C |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
5 ++ ++
|
|
|
|
|
| B |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
A + + + + + + + +
|
|
|
|
|
0 ++--+---+---+---+--+---+---+--++
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => '3d spiral with bounds, labels',
|
|
|
|
|
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
|
|
|
|
|
'--extracmds', 'set view 60,30'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A*AA*AA*
|
|
|
|
|
* A*
|
|
|
|
|
AA
|
|
|
|
|
A
|
|
|
|
|
A
|
|
|
|
|
*
|
|
|
|
|
+ A
|
|
|
|
|
40 |+ A*A*AAA* A
|
|
|
|
|
| A A*A* A
|
|
|
|
|
30 |+ AA A A
|
|
|
|
|
| A A
|
|
|
|
|
z 20 |+ AA A A
|
|
|
|
|
| AA*AA*A*AA*A*A A
|
|
|
|
|
10 |+ +- A
|
|
|
|
|
| -+ --- A
|
|
|
|
|
0 |+ -+ + ---
|
|
|
|
|
| -+ +---
|
|
|
|
|
| --+ + ---
|
|
|
|
|
| -++ +- 1
|
|
|
|
|
| -+ 0.8
|
|
|
|
|
|-+ 0.6
|
|
|
|
|
++--- - 0.4
|
|
|
|
|
-21.5 +--- -+ 0.2
|
|
|
|
|
-1+ + +-- +-0.2
|
|
|
|
|
-0.50+ +--- +-0.4
|
|
|
|
|
0.51++-+-0.6
|
|
|
|
|
1.5+-1.8
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio',
|
|
|
|
|
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
|
|
|
|
|
'--extracmds', 'set view 60,30', '--square_xy'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*AA*
|
|
|
|
|
AA*A
|
|
|
|
|
A
|
|
|
|
|
+ A*A
|
|
|
|
|
40 |+ A
|
|
|
|
|
| A
|
|
|
|
|
30 |+ A
|
|
|
|
|
| AAAAA* A
|
|
|
|
|
z 20 |+AA AA A
|
|
|
|
|
| AA* A*A AA
|
|
|
|
|
| AA*AAA*AA*A
|
|
|
|
|
10 |+ AAA
|
|
|
|
|
0 |+ A
|
|
|
|
|
| A
|
|
|
|
|
| +- A
|
|
|
|
|
| -++---
|
|
|
|
|
| --+ +---
|
|
|
|
|
|-++ +---
|
|
|
|
|
+++-- ---
|
|
|
|
|
-21.5+--- +- 1
|
|
|
|
|
-10.5--- + 0.6
|
|
|
|
|
0 +--- + 024
|
|
|
|
|
0.5 ++-0.4
|
|
|
|
|
1.521.8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'Histogram plot',
|
|
|
|
|
cmd => q{seq 50 | awk '{print $1*$1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--histo 0 --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 ++--**---+---+---+---+----+--++
|
|
|
|
|
+ ** + + + + + +
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
3.5 ++ ** ++
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
3 ++ ** ++
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
2.5 ++ ** ++
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
| ** |
|
|
|
|
|
2 ++ **** ++
|
|
|
|
|
| **** |
|
|
|
|
|
| **** |
|
|
|
|
|
| **** |
|
|
|
|
|
| **** |
|
|
|
|
|
1.5 ++ **** ++
|
|
|
|
|
| **** |
|
|
|
|
|
| **** |
|
|
|
|
|
| **** |
|
|
|
|
|
1 ++ *********************** ++
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
0.5 ++ *********************** ++
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
+ *********************** +
|
|
|
|
|
0 ++--***********************--++
|
|
|
|
|
-500 0 500 100015002000 25003000
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'Cumulative histogram',
|
|
|
|
|
cmd => q{seq 50 | awk '{print $1*$1}'},
|
|
|
|
|
options => [qw(--lines --points),
|
|
|
|
|
qw(--histo 0 --histstyle cum --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 ++--+----+---+----+---+---**--++
|
|
|
|
|
+ + + + + + *** +
|
|
|
|
|
| **** |
|
|
|
|
|
| ****** |
|
|
|
|
|
| ******* |
|
|
|
|
|
| ******* |
|
|
|
|
|
| ********* |
|
|
|
|
|
40 ++ ********** ++
|
|
|
|
|
| *********** |
|
|
|
|
|
| ************ |
|
|
|
|
|
| ************* |
|
|
|
|
|
| ************** |
|
|
|
|
|
| ************** |
|
|
|
|
|
| *************** |
|
|
|
|
|
30 ++ **************** ++
|
|
|
|
|
| ***************** |
|
|
|
|
|
| ***************** |
|
|
|
|
|
| ****************** |
|
|
|
|
|
| ****************** |
|
|
|
|
|
| ******************* |
|
|
|
|
|
| ******************** |
|
|
|
|
|
20 ++ ******************** ++
|
|
|
|
|
| ********************* |
|
|
|
|
|
| ********************* |
|
|
|
|
|
| ********************** |
|
|
|
|
|
| ********************** |
|
|
|
|
|
| ********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
10 ++ *********************** ++
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
| *********************** |
|
|
|
|
|
| ************************ |
|
|
|
|
|
| ************************ |
|
|
|
|
|
+ ************************ +
|
|
|
|
|
0 ++--************************--++
|
|
|
|
|
-500 0 500 1000 15002000 25003000
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'Circles',
|
|
|
|
|
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'},
|
|
|
|
|
options => [qw(--circles --domain)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 ++-+--+--+--+--+--+--+--*--+-**
|
|
|
|
|
+ + + + + + + + * + *+
|
|
|
|
|
| * *|
|
|
|
|
|
| ******|
|
|
|
|
|
4.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| * |
|
|
|
|
|
| **** |
|
|
|
|
|
4 ++ * ** ++
|
|
|
|
|
| * * |
|
|
|
|
|
| **** |
|
|
|
|
|
| |
|
|
|
|
|
3.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| * |
|
|
|
|
|
| **** |
|
|
|
|
|
3 ++ * ** ++
|
|
|
|
|
| * * |
|
|
|
|
|
| **** |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
2.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| * |
|
|
|
|
|
2 ++ *** ++
|
|
|
|
|
| ** |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
1.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
+ * + + + + + + + + +
|
|
|
|
|
1 ++***-+--+--+--+--+--+--+--+-++
|
|
|
|
|
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'Error bars (using extraValuesPerPoint)',
|
|
|
|
|
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'},
|
|
|
|
|
options => [qw(--domain),
|
|
|
|
|
qw(--extraValuesPerPoint 1 --curvestyle 0), 'with errorbars'],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.5 ++--+---+--+---+---+---+--+--***
|
|
|
|
|
+ + + + + + + + *
|
|
|
|
|
| *
|
|
|
|
|
5 ++ +A
|
|
|
|
|
| *
|
|
|
|
|
| *
|
|
|
|
|
| *
|
|
|
|
|
4.5 ++ ***
|
|
|
|
|
| *** |
|
|
|
|
|
| * |
|
|
|
|
|
4 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| *** |
|
|
|
|
|
3.5 ++ ++
|
|
|
|
|
| *** |
|
|
|
|
|
| * |
|
|
|
|
|
3 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| *** |
|
|
|
|
|
2.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| *** |
|
|
|
|
|
2 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| *** |
|
|
|
|
|
| |
|
|
|
|
|
1.5 ++ ++
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
1*A* ++
|
|
|
|
|
*** |
|
|
|
|
|
| |
|
|
|
|
|
+ + + + + + + + +
|
|
|
|
|
0.5 ++--+---+--+---+---+---+--+--++
|
|
|
|
|
1 1.5 2 2.5 3 3.5 4 4.5 5
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
tryplot( testname => 'Monotonicity check',
|
|
|
|
|
cmd => q{seq 10 | awk '{print (NR-1)%5,NR}'},
|
|
|
|
|
options => [qw(--lines --points --domain --monotonic)],
|
|
|
|
|
refplot => <<'EOF' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 ++--+---+--+---+---+---+--+--+A
|
|
|
|
|
+ + + + + + + + *+
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
9.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
9 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
8.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
8 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
7.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
7 ++ A ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
6.5 ++ * ++
|
|
|
|
|
| * |
|
|
|
|
|
| * |
|
|
|
|
|
+* + + + + + + + +
|
|
|
|
|
6 A+--+---+--+---+---+---+--+--++
|
|
|
|
|
0 0.5 1 1.5 2 2.5 3 3.5 4
|
|
|
|
|
|
|
|
|
|
EOF
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
|
|
|
|
sub tryplot
|
|
|
|
|
{
|
2013-10-19 16:01:59 +08:00
|
|
|
|
my %args = @_;
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
|
|
|
|
my ($fh, $input_filename) = tempfile( UNLINK => 1);
|
2013-10-19 16:01:59 +08:00
|
|
|
|
open IN, '-|', $args{cmd};
|
2013-10-19 06:17:47 +08:00
|
|
|
|
print $fh <IN>;
|
|
|
|
|
close IN;
|
|
|
|
|
close $fh;
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
my @options = ('--exit',
|
2013-10-19 06:17:47 +08:00
|
|
|
|
'--extracmds', 'unset grid',
|
|
|
|
|
'--terminal', 'dumb 40,40',
|
|
|
|
|
$input_filename);
|
|
|
|
|
|
2013-10-19 16:01:59 +08:00
|
|
|
|
unshift @options, @{$args{options}};
|
2013-10-19 06:17:47 +08:00
|
|
|
|
|
|
|
|
|
is_script_output( 'feedgnuplot', \@options,
|
2013-10-19 16:01:59 +08:00
|
|
|
|
[$args{refplot} =~ /(.*)\n/g], [],
|
|
|
|
|
$args{testname});
|
2013-10-19 06:17:47 +08:00
|
|
|
|
}
|