diff --git a/t/3d-spiral-with-bounds-labels-square-xy-aspect-ratio.ref b/t/3d-spiral-with-bounds-labels-square-xy-aspect-ratio.ref new file mode 100644 index 0000000..a17ffd0 --- /dev/null +++ b/t/3d-spiral-with-bounds-labels-square-xy-aspect-ratio.ref @@ -0,0 +1,40 @@ + + + + + + + + *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 + + + + + + + + + diff --git a/t/3d-spiral-with-bounds-labels.ref b/t/3d-spiral-with-bounds-labels.ref new file mode 100644 index 0000000..293eac9 --- /dev/null +++ b/t/3d-spiral-with-bounds-labels.ref @@ -0,0 +1,40 @@ + + + + + + + ***A****A****A****A***A** + * **A** + **A***A* + *A* + *A + * + + A + 40 |+ **A****A****A****A***A** A + | **A **A****A** A + 30 |+ A*A *A** *A + | A *AA* + z 20 |+ AA** **A* *A* + | A**A***A***A****A*****A***A****A****A* AA + 10 |+ -+---- A + | ---- +--------- A + 0 |+ ---+ + --------- + | ---++ +-+--------- + | ----++ + --------- + | ---+ + ----- 1 + | ---+ --- 0.8 + | ----+ --++ 0.6 + +-+++--------- --- 0.20.4 + -2 -1.5 ++ +--------- --- 0 + -1 + ++ --+------ --- -0.2 + -0.5 0 + ++ --------- ---+ -0.4 + 0.5 1 ++ -+--- --0.8.6 + 1.5 + +-1+ + 2 + + + + + + diff --git a/t/basic-line-plot-to-piped-hardcopy.ref b/t/basic-line-plot-to-piped-hardcopy.ref new file mode 100644 index 0000000..662b9ac --- /dev/null +++ b/t/basic-line-plot-to-piped-hardcopy.ref @@ -0,0 +1,41 @@ + + 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 + +Wrote output to |cat + diff --git a/t/basic-line-plot-with-bounds-square-aspect-ratio.ref b/t/basic-line-plot-with-bounds-square-aspect-ratio.ref new file mode 100644 index 0000000..4aedf39 --- /dev/null +++ b/t/basic-line-plot-with-bounds-square-aspect-ratio.ref @@ -0,0 +1,40 @@ + + +--+-----------+----------+-----------+-----------+-----------+----------+-----------+--+ + | + + + + + + + + | + | | + 5 ++ ++ + | | + | | + | * + | *| + | * | + 4 ++ A ++ + | * | + | * | + | * | + | * | + | * | + 3 ++ A ++ + | * | + | ** | + | * | + | * | + 2 ++ A ++ + | * | + | * | + | * | + | * | + | * | + 1 ++ A ++ + | | + | | + | | + | | + | | + 0 ++ ++ + | | + | + + + + + + + + | + +--+-----------+----------+-----------+-----------+-----------+----------+-----------+--+ + -10 -8 -6 -4 -2 0 2 4 + + diff --git a/t/basic-line-plot-with-bounds.ref b/t/basic-line-plot-with-bounds.ref new file mode 100644 index 0000000..35969f3 --- /dev/null +++ b/t/basic-line-plot-with-bounds.ref @@ -0,0 +1,40 @@ + + +--+-----------+------------+-----------+-----------+-----------+------------+-----------+--+ + | + + + + + + + + | + | | + 5 ++ ++ + | | + | | + | * + | *| + | * | + 4 ++ A ++ + | * | + | * | + | * | + | * | + | * | + 3 ++ A ++ + | * | + | ** | + | * | + | * | + 2 ++ A ++ + | * | + | * | + | * | + | * | + | * | + 1 ++ A ++ + | | + | | + | | + | | + | | + 0 ++ ++ + | | + | + + + + + + + + | + +--+-----------+------------+-----------+-----------+-----------+------------+-----------+--+ + -10 -8 -6 -4 -2 0 2 4 + + diff --git a/t/basic-line-plot.ref b/t/basic-line-plot.ref new file mode 100644 index 0000000..c6155e7 --- /dev/null +++ b/t/basic-line-plot.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/basic-lines-only-plot.ref b/t/basic-lines-only-plot.ref new file mode 100644 index 0000000..ab5c278 --- /dev/null +++ b/t/basic-lines-only-plot.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/basic-points-only-plot.ref b/t/basic-points-only-plot.ref new file mode 100644 index 0000000..29375c9 --- /dev/null +++ b/t/basic-points-only-plot.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/basic-streaming-test-twice-as-fast.ref b/t/basic-streaming-test-twice-as-fast.ref new file mode 100644 index 0000000..fca700e --- /dev/null +++ b/t/basic-streaming-test-twice-as-fast.ref @@ -0,0 +1,80 @@ + + 1 ++----------------+-----------------+-----------------+-----------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | ** | + 0.8 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.6 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.4 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.2 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + + ** + + + + + + 0 A*----------------+-----------------+-----------------+-----------------+----------------++ + 1 1.2 1.4 1.6 1.8 2 + + + + 2 ++---------------------+---------------------+----------------------+--------------------*A + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + 1.5 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | *** | + | ** | + 1 ++ *A* ++ + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + 0.5 ++ ** ++ + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + + ** + + + + + 0 A*---------------------+---------------------+----------------------+--------------------++ + 1 1.5 2 2.5 3 + + diff --git a/t/basic-streaming-test.ref b/t/basic-streaming-test.ref new file mode 100644 index 0000000..fca700e --- /dev/null +++ b/t/basic-streaming-test.ref @@ -0,0 +1,80 @@ + + 1 ++----------------+-----------------+-----------------+-----------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | ** | + 0.8 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.6 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.4 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0.2 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + + ** + + + + + + 0 A*----------------+-----------------+-----------------+-----------------+----------------++ + 1 1.2 1.4 1.6 1.8 2 + + + + 2 ++---------------------+---------------------+----------------------+--------------------*A + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + 1.5 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | *** | + | ** | + 1 ++ *A* ++ + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + 0.5 ++ ** ++ + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + + ** + + + + + 0 A*---------------------+---------------------+----------------------+--------------------++ + 1 1.5 2 2.5 3 + + diff --git a/t/basic-timefmt-plot.ref b/t/basic-timefmt-plot.ref new file mode 100644 index 0000000..f0ceccf --- /dev/null +++ b/t/basic-timefmt-plot.ref @@ -0,0 +1,40 @@ + + 5 ++---------+-----------+----------+----------+----------+-----------+----------+---------+A + + + + + + + + + + + | | + | | + 4.5 ++ ++ + | | + | | + | | + | | + 4 ++ A ++ + | | + | | + | | + 3.5 ++ ++ + | | + | | + | | + 3 ++ A ++ + | | + | | + | | + | | + 2.5 ++ ++ + | | + | | + | | + 2 ++ A ++ + | | + | | + | | + | | + 1.5 ++ ++ + | | + | | + + + + + + + + + + + 1 A+---------+-----------+----------+----------+----------+-----------+----------+---------++ + 05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12 + + diff --git a/t/circles.ref b/t/circles.ref new file mode 100644 index 0000000..7a2d079 --- /dev/null +++ b/t/circles.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/cumulative-histogram.ref b/t/cumulative-histogram.ref new file mode 100644 index 0000000..8bca4c6 --- /dev/null +++ b/t/cumulative-histogram.ref @@ -0,0 +1,40 @@ + + 50 ++-----------+------------+------------+------------+------------+-----------***----------++ + + + + + + + ** ***+* + + | **** *** * | + | *** **** *** * | + | ** *** **** *** * | + | ***** *** **** *** * | + | **** *** *** **** *** * | + 40 ++ ** **** *** *** **** *** * ++ + | ****** **** *** *** **** *** * | + | ***** *** **** *** *** **** *** * | + | *** *** *** **** *** *** **** *** * | + | ****** *** *** **** *** *** **** *** * | + | ** **** *** *** **** *** *** **** *** * | + | ****** **** *** *** **** *** *** **** *** * | + 30 ++ *** *** **** *** *** **** *** *** **** *** * ++ + | ****** *** **** *** *** **** *** *** **** *** * | + | *** *** *** **** *** *** **** *** *** **** *** * | + | ****** *** *** **** *** *** **** *** *** **** *** * | + | ** **** *** *** **** *** *** **** *** *** **** *** * | + | *** **** *** *** **** *** *** **** *** *** **** *** * | + | ****** **** *** *** **** *** *** **** *** *** **** *** * | + 20 ++ *** *** **** *** *** **** *** *** **** *** *** **** *** * ++ + | ****** *** **** *** *** **** *** *** **** *** *** **** *** * | + | ** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | *** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | ****** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | ** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + 10 ++ ** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * ++ + | *** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | *** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | *** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | ***** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + | * *** **** *** *** **** *** *** **** *** *** **** *** *** **** *** * | + + *+*** **** ***+*** **** ***+*** **** ***+*** **** ***+*** **** ***+* + + 0 ++----------********************************************-********+***-****-*****----------++ + -500 0 500 1000 1500 2000 2500 3000 + + diff --git a/t/dataid-plot.ref b/t/dataid-plot.ref new file mode 100644 index 0000000..a83ac1b --- /dev/null +++ b/t/dataid-plot.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/domain-plot.ref b/t/domain-plot.ref new file mode 100644 index 0000000..776681b --- /dev/null +++ b/t/domain-plot.ref @@ -0,0 +1,40 @@ + + 25 ++---------+-----------+----------+-----------+----------+----------+-----------+---------+A + + + + + + + + + **+ + | ** | + | ** | + | * | + | ** | + | ** | + 20 ++ ** ++ + | ** | + | * | + | ** | + | ** | + | ** | + | *A | + 15 ++ ** ++ + | *** | + | ** | + | *** | + | ** | + | ** | + | *** | + 10 ++ ** ++ + | *A* | + | *** | + | **** | + | *** | + | *** | + | **** | + 5 ++ *** ++ + | **A* | + | **** | + | ***** | + | ***** | + | **** | + A** + + + + + + + + + 0 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ + 2 3 4 5 6 7 8 9 10 + + diff --git a/t/error-bars-using-extravaluesperpoint.ref b/t/error-bars-using-extravaluesperpoint.ref new file mode 100644 index 0000000..0bc2ef9 --- /dev/null +++ b/t/error-bars-using-extravaluesperpoint.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/error-bars-using-rangesize-rangesizeall.ref b/t/error-bars-using-rangesize-rangesizeall.ref new file mode 100644 index 0000000..5643f2a --- /dev/null +++ b/t/error-bars-using-rangesize-rangesizeall.ref @@ -0,0 +1,40 @@ + + +-----------+----------+-----------+----------+-----------+----------+-----------+---------** + + + + + + + + + * + | * + 5 ++ +A + | * + | * + | * + | ** + | *** | + ## * | + 4 B# A ++ + ## * | + | * | + | *** | + | | + | *** | + | # # * | + 3 ++ #########B## A ++ + | # # * | + | * | + | *** | + | | + | | + | *** # # | + 2 ++ A ##############B### ++ + | * # # | + | *** | + | | + | | + | | + | # # | + 1 A* ##################B##### ++ + ** # # | + | | + + + + + + + + + + + +-----------+----------+-----------+----------+-----------+----------+-----------+----------+ + 1 1.5 2 2.5 3 3.5 4 4.5 5 + + diff --git a/t/error-bars-using-rangesizeall.ref b/t/error-bars-using-rangesizeall.ref new file mode 100644 index 0000000..0bc2ef9 --- /dev/null +++ b/t/error-bars-using-rangesizeall.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/histogram-plot.ref b/t/histogram-plot.ref new file mode 100644 index 0000000..3e4dcbc --- /dev/null +++ b/t/histogram-plot.ref @@ -0,0 +1,40 @@ + + 4 ++----------****----------+------------+-----------+------------+------------+-----------++ + + *+** + + + + + + + | * ** | + | * ** | + 3.5 ++ * ** ++ + | * ** | + | * ** | + | * ** | + | * ** | + 3 ++ * *** ++ + | * *** | + | * *** | + | * *** | + 2.5 ++ * *** ++ + | * *** | + | * *** | + | * *** | + 2 ++ * **** *** ++ + | * **** *** | + | * **** *** | + | * **** *** | + | * **** *** | + 1.5 ++ * **** *** ++ + | * **** *** | + | * **** *** | + | * **** *** | + 1 ++ * ************************** ******** ************************** ** ++ + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + 0.5 ++ * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** ++ + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + | * **** *** **** *** **** *** **** *** **** *** **** *** **** *** ** | + + *+**** *** **** *** **** *** **** *** **** *** **** *** **** *** ** + + 0 ++----------****************************-********-**************************-**----------++ + -500 0 500 1000 1500 2000 2500 3000 + + diff --git a/t/lines-on-both-axes-with-labels-legends-titles-different-styles.ref b/t/lines-on-both-axes-with-labels-legends-titles-different-styles.ref new file mode 100644 index 0000000..7ca0b81 --- /dev/null +++ b/t/lines-on-both-axes-with-labels-legends-titles-different-styles.ref @@ -0,0 +1,40 @@ + 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 + + diff --git a/t/lines-on-both-axes-with-labels-legends-titles.ref b/t/lines-on-both-axes-with-labels-legends-titles.ref new file mode 100644 index 0000000..1f23877 --- /dev/null +++ b/t/lines-on-both-axes-with-labels-legends-titles.ref @@ -0,0 +1,40 @@ + 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 + + diff --git a/t/monotonicity-check.ref b/t/monotonicity-check.ref new file mode 100644 index 0000000..b892a97 --- /dev/null +++ b/t/monotonicity-check.ref @@ -0,0 +1,40 @@ + + 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 + + diff --git a/t/plots.t b/t/plots.t index 43ef00f..f02257b 100644 --- a/t/plots.t +++ b/t/plots.t @@ -43,287 +43,41 @@ use Test::More tests => 58; use File::Temp 'tempfile'; use IPC::Run 'run'; use String::ShellQuote; -use File::Basename; +use FindBin qw($Bin); + tryplot( testname => 'basic line plot', cmd => 'seq 5', options => [qw(--lines --points)], - refplot => <<'EOF' ); - - - 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 + refplot => readfile('basic-line-plot.ref') ); tryplot( testname => 'basic line plot to piped hardcopy', cmd => 'seq 5', options => [qw(--lines --points), '--hardcopy', '|cat'], - refplot => <<'EOF' ); - - - 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 - -Wrote output to |cat -EOF + refplot => readfile('basic-line-plot-to-piped-hardcopy.ref') ); tryplot( testname => 'basic lines-only plot', cmd => 'seq 5', options => [qw(--lines)], - refplot => <<'EOF' ); - - - 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 - -EOF + refplot => readfile('basic-lines-only-plot.ref') ); tryplot( testname => 'basic points-only plot', cmd => 'seq 5', options => [qw(--points)], - refplot => <<'EOF' ); - - - 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 + refplot => readfile('basic-points-only-plot.ref') ); 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 + refplot => readfile('basic-line-plot-with-bounds.ref') ); 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 + refplot => readfile('basic-line-plot-with-bounds-square-aspect-ratio.ref') ); tryplot( testname => 'lines on both axes with labels, legends, titles', cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'}, @@ -331,48 +85,7 @@ tryplot( testname => 'lines on both axes with labels, legends, titles', '--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 + refplot => readfile('lines-on-both-axes-with-labels-legends-titles.ref') ); tryplot( testname => 'lines on both axes with labels, legends, titles; different styles', cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'}, @@ -381,567 +94,75 @@ tryplot( testname => 'lines on both axes with labels, legends, titles; different 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 + refplot => readfile('lines-on-both-axes-with-labels-legends-titles-different-styles.ref') ); tryplot( testname => 'domain plot', cmd => q{seq 5 | gawk '{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 + refplot => readfile('domain-plot.ref') ); tryplot( testname => 'dataid plot', cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'}, options => [qw(--lines --points), qw(--dataid --autolegend)], - refplot => <<'EOF' ); - - - 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 + refplot => readfile('dataid-plot.ref') ); tryplot( testname => '3d spiral with bounds, labels', cmd => q{seq 50 | gawk '{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****A****A****A***A** - * **A** - **A***A* - *A* - *A - * - + A - 40 |+ **A****A****A****A***A** A - | **A **A****A** A - 30 |+ A*A *A** *A - | A *AA* - z 20 |+ AA** **A* *A* - | A**A***A***A****A*****A***A****A****A* AA - 10 |+ -+---- A - | ---- +--------- A - 0 |+ ---+ + --------- - | ---++ +-+--------- - | ----++ + --------- - | ---+ + ----- 1 - | ---+ --- 0.8 - | ----+ --++ 0.6 - +-+++--------- --- 0.20.4 - -2 -1.5 ++ +--------- --- 0 - -1 + ++ --+------ --- -0.2 - -0.5 0 + ++ --------- ---+ -0.4 - 0.5 1 ++ -+--- --0.8.6 - 1.5 + +-1+ - 2 - - - - - -EOF + refplot => readfile('3d-spiral-with-bounds-labels.ref') ); tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio', cmd => q{seq 50 | gawk '{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 + refplot => readfile('3d-spiral-with-bounds-labels-square-xy-aspect-ratio.ref') ); tryplot( testname => 'Monotonicity check', cmd => q{seq 10 | gawk '{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 + refplot => readfile('monotonicity-check.ref') ); tryplot( testname => 'basic --timefmt plot', cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'}, options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S'], - refplot => <<'EOF' ); - - - 5 ++---------+-----------+----------+----------+----------+-----------+----------+---------+A - + + + + + + + + + - | | - | | - 4.5 ++ ++ - | | - | | - | | - | | - 4 ++ A ++ - | | - | | - | | - 3.5 ++ ++ - | | - | | - | | - 3 ++ A ++ - | | - | | - | | - | | - 2.5 ++ ++ - | | - | | - | | - 2 ++ A ++ - | | - | | - | | - | | - 1.5 ++ ++ - | | - | | - + + + + + + + + + - 1 A+---------+-----------+----------+----------+----------+-----------+----------+---------++ - 05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12 - -EOF + refplot => readfile('basic-timefmt-plot.ref') ); tryplot( testname => '--timefmt plot with bounds', cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'}, options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S', '--xmin', '20 Oct 2013 06:05:00', '--xmax', '20 Oct 2013 06:05:20'], - refplot => <<'EOF' ); - - - 5 ++---+---+----+---+----+---+----+---+----+---+----+---A----+---+----+---+----+---+----+--++ - + + + + + - | | - | | - 4.5 ++ ++ - | | - | | - | | - | | - 4 ++ A ++ - | | - | | - | | - 3.5 ++ ++ - | | - | | - | | - 3 ++ A ++ - | | - | | - | | - | | - 2.5 ++ ++ - | | - | | - | | - 2 ++ A ++ - | | - | | - | | - | | - 1.5 ++ ++ - | | - | | - + + + + + - 1 ++---+---+----+---+----+---+----+---A----+---+----+---+----+---+----+---+----+---+----+--++ - 05:00 05:05 05:10 05:15 05:20 - -EOF + refplot => readfile('timefmt-plot-with-bounds.ref') ); tryplot( testname => '--timefmt plot with --monotonic', cmd => q{seq 10 | gawk '{x=(NR-1)%5; print strftime("%d %b %Y %T",1382249107+x,1),$1}'}, options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S', '--monotonic'], - refplot => <<'EOF' ); - - - 10 ++---------+-----------+----------+----------+----------+-----------+----------+---------+A - + + + + + + + + + - | | - | | - 9.5 ++ ++ - | | - | | - | | - | | - 9 ++ A ++ - | | - | | - | | - 8.5 ++ ++ - | | - | | - | | - 8 ++ A ++ - | | - | | - | | - | | - 7.5 ++ ++ - | | - | | - | | - 7 ++ A ++ - | | - | | - | | - | | - 6.5 ++ ++ - | | - | | - + + + + + + + + + - 6 A+---------+-----------+----------+----------+----------+-----------+----------+---------++ - 05:07 05:07 05:08 05:08 05:09 05:09 05:10 05:10 05:11 - -EOF + refplot => readfile('timefmt-plot-with-monotonic.ref') ); tryplot( testname => '--timefmt with custom rangesize', cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1,$1/10}'}, options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S', qw(--with errorbars --rangesizeall 2)], - refplot => <<'EOF' ); - - - 5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------** - + + + + + + + + * - | * - 5 ++ +A - | * - | * - | * - 4.5 ++ ** - | *** | - | * | - 4 ++ A ++ - | * | - | * | - | *** | - 3.5 ++ ++ - | *** | - | * | - 3 ++ A ++ - | * | - | * | - | *** | - 2.5 ++ ++ - | | - | *** | - 2 ++ A ++ - | * | - | *** | - | | - 1.5 ++ ++ - | | - | | - 1 A* ++ - ** | - | | - + + + + + + + + + - 0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++ - 05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12 - -EOF + refplot => readfile('timefmt-with-custom-rangesize.ref') ); tryplot( testname => 'Error bars (using extraValuesPerPoint)', cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'}, options => [qw(--domain), qw(--extraValuesPerPoint 1 --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 + refplot => readfile('error-bars-using-extravaluesperpoint.ref') ); tryplot( testname => 'Error bars (using rangesizeall)', cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'}, options => [qw(--domain), qw(--rangesizeall 2 --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 + refplot => readfile('error-bars-using-rangesizeall.ref') ); tryplot( testname => 'Error bars (using rangesize, rangesizeall)', @@ -949,48 +170,7 @@ tryplot( testname => 'Error bars (using rangesize, rangesizeall)', options => [qw(--domain --dataid), qw(--rangesize vert 2 --rangesizeall 3 --with xerrorbars --style vert), 'with errorbars', qw(--xmin 1 --xmax 5 --ymin 0.5 --ymax 5.5)], - refplot => <<'EOF' ); - - - +-----------+----------+-----------+----------+-----------+----------+-----------+---------** - + + + + + + + + * - | * - 5 ++ +A - | * - | * - | * - | ** - | *** | - ## * | - 4 B# A ++ - ## * | - | * | - | *** | - | | - | *** | - | # # * | - 3 ++ #########B## A ++ - | # # * | - | * | - | *** | - | | - | | - | *** # # | - 2 ++ A ##############B### ++ - | * # # | - | *** | - | | - | | - | | - | # # | - 1 A* ##################B##### ++ - ** # # | - | | - + + + + + + + + + - +-----------+----------+-----------+----------+-----------+----------+-----------+----------+ - 1 1.5 2 2.5 3 3.5 4 4.5 5 - -EOF + refplot => readfile('error-bars-using-rangesize-rangesizeall.ref') ); SKIP: @@ -1013,141 +193,18 @@ tryplot( testname => 'Histogram plot', cmd => q{seq 50 | gawk '{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 1000 1500 2000 2500 3000 - -EOF + refplot => readfile('histogram-plot.ref') ); tryplot( testname => 'Cumulative histogram', cmd => q{seq 50 | gawk '{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 1500 2000 2500 3000 - -EOF + refplot => readfile('cumulative-histogram.ref') ); tryplot( testname => 'Circles', cmd => q{seq 5 | gawk '{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 + refplot => readfile('circles.ref') ); @@ -1160,1163 +217,37 @@ note( "Starting to run streaming tests. These will take several seconds each" ); tryplot( testname => 'basic streaming test', cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 1.2");}'}, options => [qw(--lines --points --stream)], - refplot => <<'EOF' ); - - - 1 ++----------------+-----------------+-----------------+-----------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - | *** | - | ** | - 0.8 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.6 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.4 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.2 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - + ** + + + + + - 0 A*----------------+-----------------+-----------------+-----------------+----------------++ - 1 1.2 1.4 1.6 1.8 2 - - - - 2 ++---------------------+---------------------+----------------------+--------------------*A - + + + + ** + - | *** | - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - 1.5 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | *** | - | ** | - 1 ++ *A* ++ - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - 0.5 ++ ** ++ - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - + ** + + + + - 0 A*---------------------+---------------------+----------------------+--------------------++ - 1 1.5 2 2.5 3 - -EOF + refplot => readfile('basic-streaming-test.ref') ); tryplot( testname => 'basic streaming test, twice as fast', cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'}, options => [qw(--lines --points --stream 0.4)], - refplot => <<'EOF' ); - - - 1 ++----------------+-----------------+-----------------+-----------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - | *** | - | ** | - 0.8 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.6 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.4 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0.2 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - + ** + + + + + - 0 A*----------------+-----------------+-----------------+-----------------+----------------++ - 1 1.2 1.4 1.6 1.8 2 - - - - 2 ++---------------------+---------------------+----------------------+--------------------*A - + + + + ** + - | *** | - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - 1.5 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | *** | - | ** | - 1 ++ *A* ++ - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - 0.5 ++ ** ++ - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - + ** + + + + - 0 A*---------------------+---------------------+----------------------+--------------------++ - 1 1.5 2 2.5 3 - -EOF + refplot => readfile('basic-streaming-test-twice-as-fast.ref') ); tryplot( testname => 'streaming with --xlen', cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'}, options => [qw(--lines --points --stream 0.4 --xlen 1.1)], - refplot => <<'EOF' ); - - - 1 ++------+----------------+---------------+---------------+----------------+--------------*A - | + + + + + ** + - | ** | - | *** | - | ** | - | ** | - | *** | - 0.8 ++ ** ++ - | ** | - | *** | - | ** | - | ** | - | *** | - | ** | - 0.6 ++ ** ++ - | *** | - | ** | - | *** | - | ** | - | ** | - | *** | - 0.4 ++ ** ++ - | ** | - | *** | - | ** | - | ** | - | *** | - | ** | - 0.2 ++ ** ++ - | *** | - | ** | - | ** | - | *** | - | ** | - | + ** + + + + + - 0 ++------A*---------------+---------------+---------------+----------------+--------------++ - 1 1.2 1.4 1.6 1.8 2 - - - - 2 ++------+----------------+---------------+---------------+----------------+--------------*A - | + + + + + ** + - | ** | - | *** | - | ** | - | ** | - | *** | - 1.8 ++ ** ++ - | ** | - | *** | - | ** | - | ** | - | *** | - | ** | - 1.6 ++ ** ++ - | *** | - | ** | - | *** | - | ** | - | ** | - | *** | - 1.4 ++ ** ++ - | ** | - | *** | - | ** | - | ** | - | *** | - | ** | - 1.2 ++ ** ++ - | *** | - | ** | - | ** | - | *** | - | ** | - | + ** + + + + + - 1 ++------A*---------------+---------------+---------------+----------------+--------------++ - 2 2.2 2.4 2.6 2.8 3 - -EOF + refplot => readfile('streaming-with-xlen.ref') ); tryplot( testname => 'streaming with --monotonic', cmd => q{seq 500 | gawk '{if(NR==11) {print "exit";} else {x=(NR-1)%5; if(x==0) {print -1,-1;} print x,NR;}; fflush(); system("sleep 0.6");}'}, options => [qw(--lines --points --stream 0.4 --domain --monotonic)], - refplot => <<'EOF' ); - - - 1 ++----------------+-----------------+-----------------+-----------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - 0.5 ++ *** ++ - | *** | - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - 0 ++ *** ++ - | ** | - | *** | - | ** | - | *** | - | ** | - | *** | - | *** | - | ** | - -0.5 ++ *** ++ - | ** | - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - + ** + + + + + - -1 A*----------------+-----------------+-----------------+-----------------+----------------++ - -1 -0.8 -0.6 -0.4 -0.2 0 - - - - 2 ++---------------------+---------------------+----------------------+--------------------*A - + + + + **** + - | **** | - | **** | - | *** | - | **** | - 1.5 ++ **** ++ - | **** | - | *** | - | **** | - | **** | - | **** | - 1 ++ A* ++ - | ** | - | ** | - | ** | - | ** | - 0.5 ++ ** ++ - | ** | - | ** | - | ** | - | ** | - | ** | - 0 ++ ** ++ - | ** | - | ** | - | ** | - | ** | - | ** | - -0.5 ++ ** ++ - | ** | - | ** | - | ** | - | ** | - +** + + + + - -1 A+---------------------+---------------------+----------------------+--------------------++ - -1 -0.5 0 0.5 1 - - - - 3 ++-------------+--------------+--------------+--------------+--------------+-------------*A - + + + + + + **** + - | *** | - | *** | - 2.5 ++ **** ++ - | *** | - | *** | - | **** | - | *** | - 2 ++ *A* ++ - | **** | - | **** | - | **** | - 1.5 ++ *** ++ - | **** | - | **** | - | **** | - 1 ++ A* ++ - | ** | - | ** | - | * | - | ** | - 0.5 ++ ** ++ - | * | - | ** | - | ** | - 0 ++ * ++ - | ** | - | ** | - | * | - | ** | - -0.5 ++ ** ++ - | * | - | ** | - +** + + + + + + - -1 A+-------------+--------------+--------------+--------------+--------------+-------------++ - -1 -0.5 0 0.5 1 1.5 2 - - - - 4 ++----------+----------+-----------+----------+-----------+----------+-----------+---------*A - + + + + + + + + *** + - | **** | - | *** | - | *** | - | **** | - | *** | - 3 ++ *A* ++ - | *** | - | **** | - | *** | - | *** | - | **** | - | *** | - 2 ++ *A* ++ - | *** | - | **** | - | *** | - | *** | - | **** | - | *** | - 1 ++ A* ++ - | ** | - | ** | - | * | - | ** | - | ** | - | * | - 0 ++ ** ++ - | * | - | ** | - | ** | - | * | - | ** | - +** + + + + + + + + - -1 A+----------+----------+-----------+----------+-----------+----------+-----------+---------++ - -1 -0.5 0 0.5 1 1.5 2 2.5 3 - - - - 5 ++----------------+------------------+-----------------+------------------+----------------*A - + + + + + *** + - | *** | - | *** | - | *** | - | *** | - 4 ++ *A* ++ - | *** | - | *** | - | **** | - | *** | - | *** | - 3 ++ *A* ++ - | **** | - | **** | - | *** | - | **** | - 2 ++ *A* ++ - | *** | - | *** | - | **** | - | *** | - | *** | - 1 ++ A* ++ - | ** | - | * | - | ** | - | * | - | ** | - 0 ++ * ++ - | ** | - | * | - | ** | - | * | - +** + + + + + - -1 A+----------------+------------------+-----------------+------------------+----------------++ - -1 0 1 2 3 4 - - - - 6 ++----------------+------------------+-----------------+------------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - 5 ++ *** ++ - | *** | - | ** | - | *** | - | ** | - 4 ++ *** ++ - | *** | - | ** | - | *** | - | *** | - 3 ++ ** ++ - | *** | - | *** | - | ** | - | *** | - 2 ++ ** ++ - | *** | - | *** | - | ** | - | *** | - 1 ++ *** ++ - | ** | - | *** | - | ** | - | *** | - 0 ++ *** ++ - | ** | - | *** | - | *** | - + ** + + + + + - -1 A*----------------+------------------+-----------------+------------------+----------------++ - -1 -0.8 -0.6 -0.4 -0.2 0 - - - - 7 ++---------------------+----------------------+----------------------+-----------------*****A - + + + + ************ + - | *********** | - | ************ | - 6 ++ A***** ++ - | ** | - | * | - | ** | - | * | - 5 ++ ** ++ - | * | - | ** | - | * | - 4 ++ ** ++ - | * | - | ** | - | * | - 3 ++ ** ++ - | * | - | ** | - | * | - | * | - 2 ++ ** ++ - | * | - | ** | - | * | - 1 ++ ** ++ - | * | - | ** | - | * | - | ** | - 0 ++ * ++ - | ** | - | * | - +** + + + + - -1 A+---------------------+----------------------+----------------------+---------------------++ - -1 -0.5 0 0.5 1 - - - - 8 ++-------------+---------------+--------------+--------------+---------------+-----------***A - + + + + + + ******** + - | ******** | - | ******** | - 7 ++ ***A*** ++ - | ******** | - | ******* | - | ******** | - 6 ++ A*** ++ - | * | - | * | - | ** | - 5 ++ * ++ - | * | - | * | - | * | - 4 ++ * ++ - | * | - | ** | - 3 ++ * ++ - | * | - | * | - | * | - 2 ++ * ++ - | * | - | ** | - | * | - 1 ++ * ++ - | * | - | * | - | * | - 0 ++ * ++ - | ** | - | * | - +* + + + + + + - -1 A+-------------+---------------+--------------+--------------+---------------+-------------++ - -1 -0.5 0 0.5 1 1.5 2 - - - - 10 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ - + + + + + + + + + - | | - | ***A - | ******** | - | ******** | - 8 ++ ***A*** ++ - | ******** | - | ******* | - | ***A*** | - | ******** | - | ******** | - 6 ++ A*** ++ - | * | - | * | - | ** | - | * | - 4 ++ * ++ - | * | - | * | - | * | - | * | - | ** | - 2 ++ * ++ - | * | - | * | - | * | - | * | - | * | - 0 ++ ** ++ - | * | - |* | - A | - | | - + + + + + + + + + - -2 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ - -1 -0.5 0 0.5 1 1.5 2 2.5 3 - - - - 10 ++----------------+-----------------+------------------+-----------------+--------------***A - + + + + + ****** + - | ****** | - | ***A** | - | ****** | - | ****** | - 8 ++ ***A** ++ - | ****** | - | ****** | - | ***A*** | - | ****** | - | ****** | - 6 ++ A** ++ - | * | - | * | - | * | - | * | - 4 ++ * ++ - | * | - | * | - | * | - | * | - | * | - 2 ++ * ++ - | * | - | * | - | * | - | * | - | * | - 0 ++ * ++ - | * | - |* | - A | - | | - + + + + + + - -2 ++----------------+-----------------+------------------+-----------------+----------------++ - -1 0 1 2 3 4 - -EOF + refplot => readfile('streaming-with-monotonic.ref') ); tryplot( testname => '--timefmt streaming plot with --xlen', cmd => q{seq 5 | gawk 'BEGIN{ print strftime("%d %b %Y %T",1382249107-1,1),-4;} {if(NR==3) {print "exit";} else{ print strftime("%d %b %Y %T",1382249107+$1,1),$1;} fflush(); system("sleep 0.6")}'}, options => ['--points', '--lines', '--domain', '--timefmt', '%d %b %Y %H:%M:%S', qw(--stream 0.4 --xlen 3)], - refplot => <<'EOF' ); - - - 1 ++-------------+---------------+--------------+--------------+---------------+-------------+A - + + + + + + **+ - | ** | - | ** | - | * | - | ** | - | ** | - 0 ++ ** ++ - | * | - | ** | - | ** | - | ** | - | * | - | ** | - -1 ++ ** ++ - | ** | - | * | - | ** | - | ** | - | * | - | ** | - -2 ++ ** ++ - | ** | - | * | - | ** | - | ** | - | ** | - | * | - -3 ++ ** ++ - | ** | - | ** | - | * | - | ** | - | ** | - + + +** + + + + - -4 ++-------------+---------------A--------------+--------------+---------------+-------------++ - 05:05 05:05 05:06 05:06 05:07 05:07 05:08 - - - - 2 ++-------------+---------------+--------------+--------------+---------------+------------**A - + + + + + + ***** + - | ***** | - | ****** | - | ***** | - | ***** | - 1 ++ *A** ++ - | ** | - | ** | - | ** | - | ** | - | ** | - 0 ++ ** ++ - | ** | - | ** | - | ** | - | *** | - -1 ++ ** ++ - | ** | - | ** | - | ** | - | ** | - | ** | - -2 ++ ** ++ - | ** | - | *** | - | ** | - | ** | - | ** | - -3 ++ ** ++ - | ** | - | ** | - | ** | - | ** | - + ** + + + + + + - -4 A*-------------+---------------+--------------+--------------+---------------+-------------++ - 05:06 05:06 05:07 05:07 05:08 05:08 05:09 - -EOF + refplot => readfile('timefmt-streaming-plot-with-xlen.ref') ); tryplot( testname => '--timefmt streaming plot with --monotonic', cmd => q{seq 10 | gawk '{x=(NR-1)%5; if(x==0) {print strftime("%d %b %Y %T",1382249107-1,-4),-4;} print strftime("%d %b %Y %T",1382249107+x,1),NR; fflush(); system("sleep 0.6")}'}, options => ['--points', '--lines', '--domain', '--timefmt', '%d %b %Y %H:%M:%S', qw(--stream 0.4 --monotonic)], - refplot => <<'EOF' ); - - - 1 ++----------------+------------------+-----------------+------------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - | *** | - | *** | - 0 ++ ** ++ - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - -1 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - -2 ++ *** ++ - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - -3 ++ ** ++ - | *** | - | *** | - | ** | - | *** | - | *** | - + ** + + + + + - -4 A*----------------+------------------+-----------------+------------------+----------------++ - 05:06 05:06 05:06 05:06 05:06 05:06 - - - - 2 ++---------------------+----------------------+----------------------+-------------------***A - + + + + ******** + - | ******** | - | ******* | - | ******** | - | ******** | - 1 ++ A*** ++ - | ** | - | * | - | ** | - | ** | - | * | - 0 ++ ** ++ - | * | - | ** | - | ** | - | * | - -1 ++ ** ++ - | * | - | ** | - | ** | - | * | - | ** | - -2 ++ * ++ - | ** | - | * | - | ** | - | ** | - | * | - -3 ++ ** ++ - | * | - | ** | - | ** | - | * | - +** + + + + - -4 A+---------------------+----------------------+----------------------+---------------------++ - 05:06 05:06 05:07 05:07 05:08 - - - - 3 ++-------------+---------------+--------------+--------------+---------------+-----------***A - + + + + + + ****** + - | ****** | - | ****** | - | ****** | - 2 ++ ***A*** ++ - | ****** | - | ****** | - | ****** | - | ****** | - 1 ++ A** ++ - | * | - | ** | - | * | - | * | - 0 ++ * ++ - | ** | - | * | - | * | - | * | - -1 ++ ** ++ - | * | - | * | - | * | - | * | - -2 ++ ** ++ - | * | - | * | - | * | - | ** | - -3 ++ * ++ - | * | - | * | - | ** | - +* + + + + + + - -4 A+-------------+---------------+--------------+--------------+---------------+-------------++ - 05:06 05:06 05:07 05:07 05:08 05:08 05:09 - - - - 4 ++----------+----------+-----------+----------+-----------+----------+-----------+--------**A - + + + + + + + + ****** + - | ****** | - | ****** | - 3 ++ **A** ++ - | **** | - | ***** | - | ***** | - | **** | - 2 ++ **A** ++ - | ****** | - | ****** | - | ****** | - 1 ++ A** ++ - | * | - | * | - | * | - 0 ++ * ++ - | * | - | * | - | * | - | * | - -1 ++ * ++ - | * | - | ** | - | * | - -2 ++ * ++ - | * | - | * | - | * | - | * | - -3 ++ * ++ - | * | - | * | - +* + + + + + + + + - -4 A+----------+----------+-----------+----------+-----------+----------+-----------+---------++ - 05:06 05:06 05:07 05:07 05:08 05:08 05:09 05:09 05:10 - - - - 5 ++----------------+------------------+-----------------+------------------+---------------**A - + + + + + **** + - | ***** | - | **** | - 4 ++ **A** ++ - | ***** | - | **** | - | ***** | - 3 ++ **A** ++ - | **** | - | ***** | - | **** | - 2 ++ **A** ++ - | ***** | - | **** | - | ***** | - 1 ++ A** ++ - | * | - | * | - 0 ++ * ++ - | * | - | * | - | * | - -1 ++ * ++ - | * | - | * | - | * | - -2 ++ * ++ - | * | - | * | - | * | - -3 ++ * ++ - | * | - | * | - +* + + + + + - -4 A+----------------+------------------+-----------------+------------------+----------------++ - 05:06 05:07 05:08 05:09 05:10 05:11 - - - - 6 ++----------------+------------------+-----------------+------------------+----------------*A - + + + + + ** + - | *** | - | *** | - | ** | - | *** | - | *** | - 4 ++ ** ++ - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - 2 ++ *** ++ - | ** | - | *** | - | *** | - | ** | - | *** | - | ** | - 0 ++ *** ++ - | *** | - | ** | - | *** | - | *** | - | ** | - | *** | - -2 ++ ** ++ - | *** | - | *** | - | ** | - | *** | - | *** | - + ** + + + + + - -4 A*----------------+------------------+-----------------+------------------+----------------++ - 05:06 05:06 05:06 05:06 05:06 05:06 - - - - 8 ++---------------------+----------------------+----------------------+---------------------++ - + + + + + - | | - | *******A - | **************** | - | *************** | - 6 ++ A******* ++ - | ** | - | * | - | ** | - | ** | - | * | - 4 ++ ** ++ - | * | - | ** | - | ** | - | * | - 2 ++ ** ++ - | * | - | ** | - | ** | - | * | - | ** | - 0 ++ * ++ - | ** | - | * | - | ** | - | ** | - | * | - -2 ++ ** ++ - | * | - | ** | - | ** | - | * | - +** + + + + - -4 A+---------------------+----------------------+----------------------+---------------------++ - 05:06 05:06 05:07 05:07 05:08 - - - - 8 ++-------------+---------------+--------------+--------------+---------------+---------*****A - + + + + + ********** + - | ********** | - | *****A***** | - | ********** | - | ********** | - 6 ++ A**** ++ - | * | - | * | - | * | - | * | - | * | - 4 ++ * ++ - | ** | - | * | - | * | - | * | - 2 ++ * ++ - | * | - | * | - | * | - | * | - | * | - 0 ++ * ++ - | * | - | * | - | * | - | * | - | ** | - -2 ++ * ++ - | * | - | * | - | * | - | * | - +* + + + + + + - -4 A+-------------+---------------+--------------+--------------+---------------+-------------++ - 05:06 05:06 05:07 05:07 05:08 05:08 05:09 - - - - 10 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ - + + + + + + + + + - | ***A - | ******** | - | ******** | - 8 ++ *****A*** ++ - | *********** | - | ***A***** | - | ******** | - | ******** | - 6 ++ A*** ++ - | * | - | * | - | * | - | * | - 4 ++ * ++ - | * | - | * | - | * | - | * | - 2 ++ * ++ - | * | - | * | - | * | - | * | - 0 ++ * ++ - | * | - | * | - | * | - | * | - -2 ++ * ++ - | * | - | * | - | * | - +* + + + + + + + + - -4 A+---------+-----------+----------+-----------+----------+----------+-----------+---------++ - 05:06 05:06 05:07 05:07 05:08 05:08 05:09 05:09 05:10 - - - - 10 ++----------------+-----------------+------------------+-----------------+-------------****A - + + + + + ********* + - | ***A**** | - | ****** | - | ****** | - 8 ++ ****A** ++ - | ********** | - | ***A**** | - | ****** | - | ****** | - 6 ++ A** ++ - | * | - | * | - | * | - | * | - 4 ++ * ++ - | * | - | * | - | * | - | * | - 2 ++ * ++ - | * | - | * | - | * | - | * | - 0 ++ * ++ - | * | - | * | - | * | - | * | - -2 ++ * ++ - | * | - | * | - |* | - +* + + + + + - -4 A+----------------+-----------------+------------------+-----------------+----------------++ - 05:06 05:07 05:08 05:09 05:10 05:11 - -EOF + refplot => readfile('timefmt-streaming-plot-with-monotonic.ref') ); } @@ -2331,7 +262,7 @@ sub tryplot '--terminal', 'dumb 100,40'); unshift @options, @{$args{options}}; - my $feedgnuplot = dirname($0) . "/../bin/feedgnuplot"; + my $feedgnuplot = "$Bin/../bin/feedgnuplot"; my $out = ''; my $err = ''; open IN, '-|', $args{cmd} or die "Couldn't open pipe to $args{cmd}"; @@ -2343,3 +274,14 @@ sub tryplot is($err, '', "$args{testname} stderr" ); is($out, $args{refplot}, "$args{testname} stdout"); } + +sub readfile +{ + my $path = "$Bin/$_[0]"; + + open my $fd, '<', $path or die "Couldn't open '$path'"; + local $/ = undef; + my $dat = <$fd>; + close $fd; + return $dat; +} diff --git a/t/streaming-with-monotonic.ref b/t/streaming-with-monotonic.ref new file mode 100644 index 0000000..34e855d --- /dev/null +++ b/t/streaming-with-monotonic.ref @@ -0,0 +1,400 @@ + + 1 ++----------------+-----------------+-----------------+-----------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + 0.5 ++ *** ++ + | *** | + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + 0 ++ *** ++ + | ** | + | *** | + | ** | + | *** | + | ** | + | *** | + | *** | + | ** | + -0.5 ++ *** ++ + | ** | + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + + ** + + + + + + -1 A*----------------+-----------------+-----------------+-----------------+----------------++ + -1 -0.8 -0.6 -0.4 -0.2 0 + + + + 2 ++---------------------+---------------------+----------------------+--------------------*A + + + + + **** + + | **** | + | **** | + | *** | + | **** | + 1.5 ++ **** ++ + | **** | + | *** | + | **** | + | **** | + | **** | + 1 ++ A* ++ + | ** | + | ** | + | ** | + | ** | + 0.5 ++ ** ++ + | ** | + | ** | + | ** | + | ** | + | ** | + 0 ++ ** ++ + | ** | + | ** | + | ** | + | ** | + | ** | + -0.5 ++ ** ++ + | ** | + | ** | + | ** | + | ** | + +** + + + + + -1 A+---------------------+---------------------+----------------------+--------------------++ + -1 -0.5 0 0.5 1 + + + + 3 ++-------------+--------------+--------------+--------------+--------------+-------------*A + + + + + + + **** + + | *** | + | *** | + 2.5 ++ **** ++ + | *** | + | *** | + | **** | + | *** | + 2 ++ *A* ++ + | **** | + | **** | + | **** | + 1.5 ++ *** ++ + | **** | + | **** | + | **** | + 1 ++ A* ++ + | ** | + | ** | + | * | + | ** | + 0.5 ++ ** ++ + | * | + | ** | + | ** | + 0 ++ * ++ + | ** | + | ** | + | * | + | ** | + -0.5 ++ ** ++ + | * | + | ** | + +** + + + + + + + -1 A+-------------+--------------+--------------+--------------+--------------+-------------++ + -1 -0.5 0 0.5 1 1.5 2 + + + + 4 ++----------+----------+-----------+----------+-----------+----------+-----------+---------*A + + + + + + + + + *** + + | **** | + | *** | + | *** | + | **** | + | *** | + 3 ++ *A* ++ + | *** | + | **** | + | *** | + | *** | + | **** | + | *** | + 2 ++ *A* ++ + | *** | + | **** | + | *** | + | *** | + | **** | + | *** | + 1 ++ A* ++ + | ** | + | ** | + | * | + | ** | + | ** | + | * | + 0 ++ ** ++ + | * | + | ** | + | ** | + | * | + | ** | + +** + + + + + + + + + -1 A+----------+----------+-----------+----------+-----------+----------+-----------+---------++ + -1 -0.5 0 0.5 1 1.5 2 2.5 3 + + + + 5 ++----------------+------------------+-----------------+------------------+----------------*A + + + + + + *** + + | *** | + | *** | + | *** | + | *** | + 4 ++ *A* ++ + | *** | + | *** | + | **** | + | *** | + | *** | + 3 ++ *A* ++ + | **** | + | **** | + | *** | + | **** | + 2 ++ *A* ++ + | *** | + | *** | + | **** | + | *** | + | *** | + 1 ++ A* ++ + | ** | + | * | + | ** | + | * | + | ** | + 0 ++ * ++ + | ** | + | * | + | ** | + | * | + +** + + + + + + -1 A+----------------+------------------+-----------------+------------------+----------------++ + -1 0 1 2 3 4 + + + + 6 ++----------------+------------------+-----------------+------------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + 5 ++ *** ++ + | *** | + | ** | + | *** | + | ** | + 4 ++ *** ++ + | *** | + | ** | + | *** | + | *** | + 3 ++ ** ++ + | *** | + | *** | + | ** | + | *** | + 2 ++ ** ++ + | *** | + | *** | + | ** | + | *** | + 1 ++ *** ++ + | ** | + | *** | + | ** | + | *** | + 0 ++ *** ++ + | ** | + | *** | + | *** | + + ** + + + + + + -1 A*----------------+------------------+-----------------+------------------+----------------++ + -1 -0.8 -0.6 -0.4 -0.2 0 + + + + 7 ++---------------------+----------------------+----------------------+-----------------*****A + + + + + ************ + + | *********** | + | ************ | + 6 ++ A***** ++ + | ** | + | * | + | ** | + | * | + 5 ++ ** ++ + | * | + | ** | + | * | + 4 ++ ** ++ + | * | + | ** | + | * | + 3 ++ ** ++ + | * | + | ** | + | * | + | * | + 2 ++ ** ++ + | * | + | ** | + | * | + 1 ++ ** ++ + | * | + | ** | + | * | + | ** | + 0 ++ * ++ + | ** | + | * | + +** + + + + + -1 A+---------------------+----------------------+----------------------+---------------------++ + -1 -0.5 0 0.5 1 + + + + 8 ++-------------+---------------+--------------+--------------+---------------+-----------***A + + + + + + + ******** + + | ******** | + | ******** | + 7 ++ ***A*** ++ + | ******** | + | ******* | + | ******** | + 6 ++ A*** ++ + | * | + | * | + | ** | + 5 ++ * ++ + | * | + | * | + | * | + 4 ++ * ++ + | * | + | ** | + 3 ++ * ++ + | * | + | * | + | * | + 2 ++ * ++ + | * | + | ** | + | * | + 1 ++ * ++ + | * | + | * | + | * | + 0 ++ * ++ + | ** | + | * | + +* + + + + + + + -1 A+-------------+---------------+--------------+--------------+---------------+-------------++ + -1 -0.5 0 0.5 1 1.5 2 + + + + 10 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ + + + + + + + + + + + | | + | ***A + | ******** | + | ******** | + 8 ++ ***A*** ++ + | ******** | + | ******* | + | ***A*** | + | ******** | + | ******** | + 6 ++ A*** ++ + | * | + | * | + | ** | + | * | + 4 ++ * ++ + | * | + | * | + | * | + | * | + | ** | + 2 ++ * ++ + | * | + | * | + | * | + | * | + | * | + 0 ++ ** ++ + | * | + |* | + A | + | | + + + + + + + + + + + -2 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ + -1 -0.5 0 0.5 1 1.5 2 2.5 3 + + + + 10 ++----------------+-----------------+------------------+-----------------+--------------***A + + + + + + ****** + + | ****** | + | ***A** | + | ****** | + | ****** | + 8 ++ ***A** ++ + | ****** | + | ****** | + | ***A*** | + | ****** | + | ****** | + 6 ++ A** ++ + | * | + | * | + | * | + | * | + 4 ++ * ++ + | * | + | * | + | * | + | * | + | * | + 2 ++ * ++ + | * | + | * | + | * | + | * | + | * | + 0 ++ * ++ + | * | + |* | + A | + | | + + + + + + + + -2 ++----------------+-----------------+------------------+-----------------+----------------++ + -1 0 1 2 3 4 + + diff --git a/t/streaming-with-xlen.ref b/t/streaming-with-xlen.ref new file mode 100644 index 0000000..934bd18 --- /dev/null +++ b/t/streaming-with-xlen.ref @@ -0,0 +1,80 @@ + + 1 ++------+----------------+---------------+---------------+----------------+--------------*A + | + + + + + ** + + | ** | + | *** | + | ** | + | ** | + | *** | + 0.8 ++ ** ++ + | ** | + | *** | + | ** | + | ** | + | *** | + | ** | + 0.6 ++ ** ++ + | *** | + | ** | + | *** | + | ** | + | ** | + | *** | + 0.4 ++ ** ++ + | ** | + | *** | + | ** | + | ** | + | *** | + | ** | + 0.2 ++ ** ++ + | *** | + | ** | + | ** | + | *** | + | ** | + | + ** + + + + + + 0 ++------A*---------------+---------------+---------------+----------------+--------------++ + 1 1.2 1.4 1.6 1.8 2 + + + + 2 ++------+----------------+---------------+---------------+----------------+--------------*A + | + + + + + ** + + | ** | + | *** | + | ** | + | ** | + | *** | + 1.8 ++ ** ++ + | ** | + | *** | + | ** | + | ** | + | *** | + | ** | + 1.6 ++ ** ++ + | *** | + | ** | + | *** | + | ** | + | ** | + | *** | + 1.4 ++ ** ++ + | ** | + | *** | + | ** | + | ** | + | *** | + | ** | + 1.2 ++ ** ++ + | *** | + | ** | + | ** | + | *** | + | ** | + | + ** + + + + + + 1 ++------A*---------------+---------------+---------------+----------------+--------------++ + 2 2.2 2.4 2.6 2.8 3 + + diff --git a/t/timefmt-plot-with-bounds.ref b/t/timefmt-plot-with-bounds.ref new file mode 100644 index 0000000..0931043 --- /dev/null +++ b/t/timefmt-plot-with-bounds.ref @@ -0,0 +1,40 @@ + + 5 ++---+---+----+---+----+---+----+---+----+---+----+---A----+---+----+---+----+---+----+--++ + + + + + + + | | + | | + 4.5 ++ ++ + | | + | | + | | + | | + 4 ++ A ++ + | | + | | + | | + 3.5 ++ ++ + | | + | | + | | + 3 ++ A ++ + | | + | | + | | + | | + 2.5 ++ ++ + | | + | | + | | + 2 ++ A ++ + | | + | | + | | + | | + 1.5 ++ ++ + | | + | | + + + + + + + 1 ++---+---+----+---+----+---+----+---A----+---+----+---+----+---+----+---+----+---+----+--++ + 05:00 05:05 05:10 05:15 05:20 + + diff --git a/t/timefmt-plot-with-monotonic.ref b/t/timefmt-plot-with-monotonic.ref new file mode 100644 index 0000000..5f3218d --- /dev/null +++ b/t/timefmt-plot-with-monotonic.ref @@ -0,0 +1,40 @@ + + 10 ++---------+-----------+----------+----------+----------+-----------+----------+---------+A + + + + + + + + + + + | | + | | + 9.5 ++ ++ + | | + | | + | | + | | + 9 ++ A ++ + | | + | | + | | + 8.5 ++ ++ + | | + | | + | | + 8 ++ A ++ + | | + | | + | | + | | + 7.5 ++ ++ + | | + | | + | | + 7 ++ A ++ + | | + | | + | | + | | + 6.5 ++ ++ + | | + | | + + + + + + + + + + + 6 A+---------+-----------+----------+----------+----------+-----------+----------+---------++ + 05:07 05:07 05:08 05:08 05:09 05:09 05:10 05:10 05:11 + + diff --git a/t/timefmt-streaming-plot-with-monotonic.ref b/t/timefmt-streaming-plot-with-monotonic.ref new file mode 100644 index 0000000..561cc9f --- /dev/null +++ b/t/timefmt-streaming-plot-with-monotonic.ref @@ -0,0 +1,400 @@ + + 1 ++----------------+------------------+-----------------+------------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | *** | + 0 ++ ** ++ + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + -1 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + -2 ++ *** ++ + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + -3 ++ ** ++ + | *** | + | *** | + | ** | + | *** | + | *** | + + ** + + + + + + -4 A*----------------+------------------+-----------------+------------------+----------------++ + 05:06 05:06 05:06 05:06 05:06 05:06 + + + + 2 ++---------------------+----------------------+----------------------+-------------------***A + + + + + ******** + + | ******** | + | ******* | + | ******** | + | ******** | + 1 ++ A*** ++ + | ** | + | * | + | ** | + | ** | + | * | + 0 ++ ** ++ + | * | + | ** | + | ** | + | * | + -1 ++ ** ++ + | * | + | ** | + | ** | + | * | + | ** | + -2 ++ * ++ + | ** | + | * | + | ** | + | ** | + | * | + -3 ++ ** ++ + | * | + | ** | + | ** | + | * | + +** + + + + + -4 A+---------------------+----------------------+----------------------+---------------------++ + 05:06 05:06 05:07 05:07 05:08 + + + + 3 ++-------------+---------------+--------------+--------------+---------------+-----------***A + + + + + + + ****** + + | ****** | + | ****** | + | ****** | + 2 ++ ***A*** ++ + | ****** | + | ****** | + | ****** | + | ****** | + 1 ++ A** ++ + | * | + | ** | + | * | + | * | + 0 ++ * ++ + | ** | + | * | + | * | + | * | + -1 ++ ** ++ + | * | + | * | + | * | + | * | + -2 ++ ** ++ + | * | + | * | + | * | + | ** | + -3 ++ * ++ + | * | + | * | + | ** | + +* + + + + + + + -4 A+-------------+---------------+--------------+--------------+---------------+-------------++ + 05:06 05:06 05:07 05:07 05:08 05:08 05:09 + + + + 4 ++----------+----------+-----------+----------+-----------+----------+-----------+--------**A + + + + + + + + + ****** + + | ****** | + | ****** | + 3 ++ **A** ++ + | **** | + | ***** | + | ***** | + | **** | + 2 ++ **A** ++ + | ****** | + | ****** | + | ****** | + 1 ++ A** ++ + | * | + | * | + | * | + 0 ++ * ++ + | * | + | * | + | * | + | * | + -1 ++ * ++ + | * | + | ** | + | * | + -2 ++ * ++ + | * | + | * | + | * | + | * | + -3 ++ * ++ + | * | + | * | + +* + + + + + + + + + -4 A+----------+----------+-----------+----------+-----------+----------+-----------+---------++ + 05:06 05:06 05:07 05:07 05:08 05:08 05:09 05:09 05:10 + + + + 5 ++----------------+------------------+-----------------+------------------+---------------**A + + + + + + **** + + | ***** | + | **** | + 4 ++ **A** ++ + | ***** | + | **** | + | ***** | + 3 ++ **A** ++ + | **** | + | ***** | + | **** | + 2 ++ **A** ++ + | ***** | + | **** | + | ***** | + 1 ++ A** ++ + | * | + | * | + 0 ++ * ++ + | * | + | * | + | * | + -1 ++ * ++ + | * | + | * | + | * | + -2 ++ * ++ + | * | + | * | + | * | + -3 ++ * ++ + | * | + | * | + +* + + + + + + -4 A+----------------+------------------+-----------------+------------------+----------------++ + 05:06 05:07 05:08 05:09 05:10 05:11 + + + + 6 ++----------------+------------------+-----------------+------------------+----------------*A + + + + + + ** + + | *** | + | *** | + | ** | + | *** | + | *** | + 4 ++ ** ++ + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + 2 ++ *** ++ + | ** | + | *** | + | *** | + | ** | + | *** | + | ** | + 0 ++ *** ++ + | *** | + | ** | + | *** | + | *** | + | ** | + | *** | + -2 ++ ** ++ + | *** | + | *** | + | ** | + | *** | + | *** | + + ** + + + + + + -4 A*----------------+------------------+-----------------+------------------+----------------++ + 05:06 05:06 05:06 05:06 05:06 05:06 + + + + 8 ++---------------------+----------------------+----------------------+---------------------++ + + + + + + + | | + | *******A + | **************** | + | *************** | + 6 ++ A******* ++ + | ** | + | * | + | ** | + | ** | + | * | + 4 ++ ** ++ + | * | + | ** | + | ** | + | * | + 2 ++ ** ++ + | * | + | ** | + | ** | + | * | + | ** | + 0 ++ * ++ + | ** | + | * | + | ** | + | ** | + | * | + -2 ++ ** ++ + | * | + | ** | + | ** | + | * | + +** + + + + + -4 A+---------------------+----------------------+----------------------+---------------------++ + 05:06 05:06 05:07 05:07 05:08 + + + + 8 ++-------------+---------------+--------------+--------------+---------------+---------*****A + + + + + + ********** + + | ********** | + | *****A***** | + | ********** | + | ********** | + 6 ++ A**** ++ + | * | + | * | + | * | + | * | + | * | + 4 ++ * ++ + | ** | + | * | + | * | + | * | + 2 ++ * ++ + | * | + | * | + | * | + | * | + | * | + 0 ++ * ++ + | * | + | * | + | * | + | * | + | ** | + -2 ++ * ++ + | * | + | * | + | * | + | * | + +* + + + + + + + -4 A+-------------+---------------+--------------+--------------+---------------+-------------++ + 05:06 05:06 05:07 05:07 05:08 05:08 05:09 + + + + 10 ++---------+-----------+----------+-----------+----------+----------+-----------+---------++ + + + + + + + + + + + | ***A + | ******** | + | ******** | + 8 ++ *****A*** ++ + | *********** | + | ***A***** | + | ******** | + | ******** | + 6 ++ A*** ++ + | * | + | * | + | * | + | * | + 4 ++ * ++ + | * | + | * | + | * | + | * | + 2 ++ * ++ + | * | + | * | + | * | + | * | + 0 ++ * ++ + | * | + | * | + | * | + | * | + -2 ++ * ++ + | * | + | * | + | * | + +* + + + + + + + + + -4 A+---------+-----------+----------+-----------+----------+----------+-----------+---------++ + 05:06 05:06 05:07 05:07 05:08 05:08 05:09 05:09 05:10 + + + + 10 ++----------------+-----------------+------------------+-----------------+-------------****A + + + + + + ********* + + | ***A**** | + | ****** | + | ****** | + 8 ++ ****A** ++ + | ********** | + | ***A**** | + | ****** | + | ****** | + 6 ++ A** ++ + | * | + | * | + | * | + | * | + 4 ++ * ++ + | * | + | * | + | * | + | * | + 2 ++ * ++ + | * | + | * | + | * | + | * | + 0 ++ * ++ + | * | + | * | + | * | + | * | + -2 ++ * ++ + | * | + | * | + |* | + +* + + + + + + -4 A+----------------+-----------------+------------------+-----------------+----------------++ + 05:06 05:07 05:08 05:09 05:10 05:11 + + diff --git a/t/timefmt-streaming-plot-with-xlen.ref b/t/timefmt-streaming-plot-with-xlen.ref new file mode 100644 index 0000000..67e3fd6 --- /dev/null +++ b/t/timefmt-streaming-plot-with-xlen.ref @@ -0,0 +1,80 @@ + + 1 ++-------------+---------------+--------------+--------------+---------------+-------------+A + + + + + + + **+ + | ** | + | ** | + | * | + | ** | + | ** | + 0 ++ ** ++ + | * | + | ** | + | ** | + | ** | + | * | + | ** | + -1 ++ ** ++ + | ** | + | * | + | ** | + | ** | + | * | + | ** | + -2 ++ ** ++ + | ** | + | * | + | ** | + | ** | + | ** | + | * | + -3 ++ ** ++ + | ** | + | ** | + | * | + | ** | + | ** | + + + +** + + + + + -4 ++-------------+---------------A--------------+--------------+---------------+-------------++ + 05:05 05:05 05:06 05:06 05:07 05:07 05:08 + + + + 2 ++-------------+---------------+--------------+--------------+---------------+------------**A + + + + + + + ***** + + | ***** | + | ****** | + | ***** | + | ***** | + 1 ++ *A** ++ + | ** | + | ** | + | ** | + | ** | + | ** | + 0 ++ ** ++ + | ** | + | ** | + | ** | + | *** | + -1 ++ ** ++ + | ** | + | ** | + | ** | + | ** | + | ** | + -2 ++ ** ++ + | ** | + | *** | + | ** | + | ** | + | ** | + -3 ++ ** ++ + | ** | + | ** | + | ** | + | ** | + + ** + + + + + + + -4 A*-------------+---------------+--------------+--------------+---------------+-------------++ + 05:06 05:06 05:07 05:07 05:08 05:08 05:09 + + diff --git a/t/timefmt-with-custom-rangesize.ref b/t/timefmt-with-custom-rangesize.ref new file mode 100644 index 0000000..033b7ef --- /dev/null +++ b/t/timefmt-with-custom-rangesize.ref @@ -0,0 +1,40 @@ + + 5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------** + + + + + + + + + * + | * + 5 ++ +A + | * + | * + | * + 4.5 ++ ** + | *** | + | * | + 4 ++ A ++ + | * | + | * | + | *** | + 3.5 ++ ++ + | *** | + | * | + 3 ++ A ++ + | * | + | * | + | *** | + 2.5 ++ ++ + | | + | *** | + 2 ++ A ++ + | * | + | *** | + | | + 1.5 ++ ++ + | | + | | + 1 A* ++ + ** | + | | + + + + + + + + + + + 0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++ + 05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12 + +