Forgot to load lapack in a few examples
[maxima.git] / share / draw / rtest_draw.mac
blob13dcd4e40f02a844c0dc91a1b30d86fe5514061c
2     maxima_tempdir: sconcat (maxima_tempdir, "/", "draw-test-", ?getpid ()),
3     print ("rtest_draw: output image and Gnuplot files to", maxima_tempdir),
4     load ("operatingsystem"),
5     /* I SUPPOSE WE SHOULD NUKE THE DIRECTORY IF IT EXISTS ALREADY */
6     mkdir (maxima_tempdir),
8     execute_test (expr, result) ::=
9         block ([file_name_output, file_name_output_path],
11                file_name_output: next_file_name (),
12                /* need to paste path onto file name, since otherwise
13                 * the graphic output file is created in the current directory.
14                 */
15                file_name_output_path: sconcat (maxima_tempdir, "/", file_name_output),
17                /* assign these file names to global variables
18                 * so that they can be inspected after the fact
19                 */
20                file_name_gnuplot: sconcat (file_name_output, ".gnuplot"),
21                file_name_data_gnuplot: sconcat (file_name_output, ".data"),
23                draw_tests[file_name_output]: expr,
24                buildq ([file_name_output_path, file_name_gnuplot, file_name_data_gnuplot, expr, result],
25                        (set_draw_defaults ('file_name = file_name_output_path,
26                                            'gnuplot_file_name = file_name_gnuplot,
27                                            'data_file_name = file_name_data_gnuplot),
28                         expr,
29                         result))),
31     file_name_counter: 0,
32     next_file_name () := printf (false, "draw-test-~3,'0d", file_name_counter: file_name_counter + 1),
34     /* Define a function that tests if the gnuplot file created by draw contains
35        a set of lines.
36        */
37     gnuplot_contains([x]):=block(
38         [
39             infile:openr(sconcat(maxima_tempdir,"/",file_name_gnuplot)),
40             line,
41             retval,
42             lines:[]
43         ],
44         while(stringp(line:readline(infile))) do
45             push(line,lines),
46         retval:emptyp(
47             setdifference(
48                 setify(x),
49                 setify(lines)
50             )
51         ),
52         close(infile),
53         return(retval)
54     ),
55     /* Define a function that tests if the gnuplot file created by draw contains
56        a string.
57        */
58     gnuplot_contains_string(x):=block(
59         [
60             infile:openr(sconcat(maxima_tempdir,"/",file_name_gnuplot)),
61             line,retval:false
62         ],
63         while(stringp(line:readline(infile))) do
64             if numberp(ssearch(x,line)) then retval:true,
65         close(infile),
66         return(retval)
67     ),
68     0
72 /* Test if "title=" affects the gnuplot file. */
73 execute_test (draw2d(
74     terminal='svg,
75     explicit(sin(x),x,1,10)
76 ),0);
78 gnuplot_contains("set title ''");
79 true$
81 execute_test (draw2d(
82     terminal='svg,
83     title="Test",
84     explicit(sin(x),x,1,10)
85 ),0);
87 gnuplot_contains("set title 'Test'");
88 true$
90 /* Test "contour=". */
91 execute_test (draw3d(
92     terminal='svg,
93     contour='none,
94     explicit(sin(x*y),x,1,10,y,1,10)
95 ),0);
97 execute_test (draw3d(
98     terminal='svg,
99     contour='base,
100     explicit(sin(x*y),x,1,10,y,1,10)
101 ),0);
103 gnuplot_contains("set contour base");
104 true$
105 execute_test (draw3d(
106     terminal='svg,
107     contour='both,
108     explicit(sin(x*y),x,1,10,y,1,10)
109 ),0);
111 gnuplot_contains("set contour both");
112 true$
113 execute_test (draw3d(
114     terminal='svg,
115     contour='surface,
116     explicit(sin(x*y),x,1,10,y,1,10)
117 ),0);
119 gnuplot_contains("set contour surface");
120 true$
121 execute_test (draw3d(
122     terminal='svg,
123     contour='map,
124     explicit(sin(x*y),x,1,10,y,1,10)
125 ),0);
127 gnuplot_contains("set contour base","unset surface");
128 true$
130 /* Test "axis_3d=". */
131 execute_test (draw3d(
132     terminal='svg,
133     axis_3d=false,
134     explicit(sin(x*y),x,1,10,y,1,10)
135 ),0);
137 gnuplot_contains("unset xtics", "unset ytics", "unset ztics", "set border 0");
138 true$
139 execute_test (draw3d(
140     terminal='svg,
141     axis_3d=true,
142     explicit(sin(x*y),x,1,10,y,1,10)
143 ),0);
145 gnuplot_contains("unset xtics");
146 false$
147 gnuplot_contains("unset ytics");
148 false$
149 gnuplot_contains("unset ztics");
150 false$
151 gnuplot_contains("set border 0");
152 false$
154 /* test the other axis_* commands */
155 execute_test (draw2d(
156     terminal='svg,
157     axis_bottom = false,
158     explicit(sin(x),x,1,10)
159 ),0);
161 gnuplot_contains("set border 14");
162 true$
163 execute_test (draw2d(
164     terminal='svg,
165     axis_top = false,
166     explicit(sin(x),x,1,10)
167 ),0);
169 gnuplot_contains("set border 11");
170 true$
171 execute_test (draw2d(
172     terminal='svg,
173     axis_left = false,
174     explicit(sin(x),x,1,10)
175 ),0);
177 gnuplot_contains("set border 13");
178 true$
179 execute_test (draw2d(
180     terminal='svg,
181     axis_right = false,
182     explicit(sin(x),x,1,10)
183 ),0);
185 gnuplot_contains("set border 7");
186 true$
189 /* test all combination of border and transparent */
190 execute_test (draw2d(
191     terminal='svg,
192     border = true, transparent = true,
193     polygon([[3,2],[7,2],[5,5]])
194 ),0);
196 gnuplot_contains_string("lt ");
197 true$
198 gnuplot_contains_string("filledcurves ");
199 false$
200 execute_test (draw2d(
201     terminal='svg,
202     border = false, transparent = false,
203     polygon([[3,2],[7,2],[5,5]])
204 ),0);
206 gnuplot_contains_string("lt ");
207 false$
208 gnuplot_contains_string("filledcurves ");
209 true$
210 execute_test (draw2d(
211     terminal='svg,
212     border = true, transparent = false,
213     polygon([[3,2],[7,2],[5,5]])
214 ),0);
216 gnuplot_contains_string("lt ");
217 true$
218 gnuplot_contains_string("filledcurves ");
219 true$
221 /* test background_color */
222 execute_test (draw2d(
223     terminal='svg,
224     line_width=50,
225     background_color="#FF0000",
226     explicit(sin(x),x,0,10)
227 ),0);
229 gnuplot_contains_string("obj 1 fc rgb '#ff0000'");
230 true$
231 execute_test (draw2d(
232     terminal='svg,
233     line_width=50,
234     background_color="#00FF0080",
235     explicit(sin(x),x,0,10)
236 ),0);
238 gnuplot_contains_string("obj 1 fc rgb '#00ff0080'");
239 true$
240 execute_test (draw2d(
241     terminal='svg,
242     line_width=50,
243     background_color='yellow,
244     explicit(sin(x),x,0,10)
245 ),0);
247 gnuplot_contains_string("obj 1 fc rgb '#FFFF00'");
248 true$
250 /* test line_width and line colors including semi-transparent ones */
251 execute_test (draw2d(
252     terminal='svg,
253     line_width=50,
254     color="#FF0000",
255     explicit(sin(x),x,0,10),
256     color="#0000FF80",
257     explicit(cos(x),x,0,10)
258 ),0);
260 gnuplot_contains_string("lw 50");
261 true$
262 gnuplot_contains_string("lw 50");
263 true$
264 gnuplot_contains_string("lc rgb '#800000ff'");
265 true$
266 gnuplot_contains_string("lc rgb '#ff0000'");
267 true$
268 execute_test (draw2d(
269     terminal='svg,
270     line_width=50,
271     color='red,
272     explicit(sin(x),x,0,10),
273     color='blue,
274     explicit(cos(x),x,0,10)
275 ),0);
277 gnuplot_contains_string("lc rgb '#FF0000'");
278 true$
279 gnuplot_contains_string("lc rgb '#0000FF'");
280 true$
282 /* test colorbox */
283 execute_test (draw(
284     terminal='svg,
285     gr2d(image(apply('matrix,
286         makelist(makelist(random(200),i,1,30),i,1,30)),0,0,30,30))
287 ),0);
289 gnuplot_contains("set colorbox");
290 true$
291 gnuplot_contains("unset colorbox");
292 false$
293 execute_test (draw(
294     terminal='svg,
295     gr2d(colorbox = false, image(apply('matrix,
296         makelist(makelist(random(200),i,1,30),i,1,30)),0,0,30,30))
297 ),0);
299 gnuplot_contains("set colorbox");
300 false$
301 gnuplot_contains("unset colorbox");
302 true$
304 /* test "columns=" */
305 execute_test (draw(
306     terminal='svg,
307     gr2d(nticks=30,
308         parametric(2*cos(t),5*sin(t),t,0,2*%pi)),
309     gr2d(polygon([4,5,7],[6,4,2])),
310     columns=2),
311     0
314 gnuplot_contains("set size 1.0, 0.5");
315 false$
316 gnuplot_contains("set size 0.5, 1.0");
317 true$
318 execute_test (draw(
319     terminal='svg,
320     gr2d(title="Ellipse",
321         nticks=30,
322         parametric(2*cos(t),5*sin(t),t,0,2*%pi)),
323     gr2d(title="Triangle",
324         polygon([4,5,7],[6,4,2])),
325     columns=1),
326     0
329 gnuplot_contains("set size 1.0, 0.5");
330 true$
331 gnuplot_contains("set size 0.5, 1.0");
332 false$
333 gnuplot_contains("set title 'Ellipse'");
334 true$
335 gnuplot_contains("set title 'Triangle'");
336 true$
338 /* test "allocation=" */
339 execute_test (draw(
340     terminal='svg,
341     dimensions=[1123,1124],
342     gr2d(
343         explicit(x^2,x,-1,1)),
344     gr2d(
345         allocation = [[1/4, 1/4],[1/2, 1/2]],
346         explicit(x^3,x,-1,1),
347         grid = true)
348     ),
349     0
352 gnuplot_contains("set size 0.5, 0.5");
353 true$
354 gnuplot_contains("set origin 0.25, 0.25");
355 true$
356 gnuplot_contains_string("size 1123, 1124");
357 true$
359 /* test "delay=" */
360 execute_test (draw(
361     terminal='animated_gif,
362     delay     = 100,
363     gr2d(explicit(x^2,x,-1,1)),
364     gr2d(explicit(x^3,x,-1,1)),
365     gr2d(explicit(x^4,x,-1,1))),0);
367 gnuplot_contains_string("delay 100");
368 true$
369 gnuplot_contains_string("set terminal gif enhanced animate");
370 true$
372 /* test "enhanced3d=". In this instance we don't look at the .gnuplot file
373    but at the data this file causes gnuplot to plot instead.
375 execute_test (draw3d(
376     terminal='svg,
377     enhanced3d='none,
378     points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
381 read_nested_list (sconcat (maxima_tempdir, "/", file_name_data_gnuplot));
382 [[1.0,3.0,1.0],[2.0,5.0,7.0],[3.0,3.0,5.0],[4.0,1.0,3.0],[],[]]$
383 execute_test (draw3d(
384     terminal='svg,
385     enhanced3d=false,
386     points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
389 read_nested_list (sconcat (maxima_tempdir, "/", file_name_data_gnuplot));
390 [[1.0,3.0,1.0],[2.0,5.0,7.0],[3.0,3.0,5.0],[4.0,1.0,3.0],[],[]]$
391 execute_test (draw3d(
392     terminal='svg,
393     enhanced3d = [x-z/10,x,y,z],
394     points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
397 read_nested_list (sconcat (maxima_tempdir, "/", file_name_data_gnuplot));
398 [[1.0,3.0,1.0,0.9],[2.0,5.0,7.0,1.3],[3.0,3.0,5.0,2.5],[4.0,1.0,3.0,3.7],[],[]]$
399 execute_test (draw3d(
400     terminal='svg,
401     enhanced3d=true,
402     points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
405 read_nested_list (sconcat (maxima_tempdir, "/", file_name_data_gnuplot));
406 [[1.0,3.0,1.0,1.0],[2.0,5.0,7.0,7.0],[3.0,3.0,5.0,5.0],[4.0,1.0,3.0,3.0],[],[]]$
407 execute_test (draw3d(
408     terminal='svg,
409     enhanced3d = [sin(r*s),r,s],
410     explicit(sin(x)*sin(y),x,-2,2,y,-2,2)),
414 /* For the errors object we can at least test if using any of its variants
415    causes an error. */
416 execute_test (draw2d(
417     terminal='svg,
418     error_type = 'y,
419     errors([[1,2,1], [3,5,3], [10,3,1], [17,6,2]])),0);
421 execute_test (draw2d(
422     terminal='svg,
423     error_type = 'x,
424     errors([[1,2,1], [3,5,3], [10,3,1], [17,6,2]])),0);
426 execute_test (draw2d(
427     terminal='svg,
428     error_type = 'y,
429     errors([[1,2,1,1], [3,5,3,2], [10,3,1,1], [17,6,2,2]])),0);
431 execute_test (draw2d(
432     terminal='svg,
433     error_type = 'x,
434     errors([[1,2,1,1], [3,5,3,2], [10,3,1,1], [17,6,2,2]])),0);
436 execute_test (draw2d(
437     terminal='svg,
438     error_type = 'xy,
439     errors([[1,2,1,1], [3,5,3,3], [10,3,1,2], [17,6,2,1]])),0);
441 execute_test (draw2d(
442     terminal='svg,
443     error_type = 'boxes,
444     errors([[1,2,1,1], [3,5,3,3], [10,3,1,2], [17,6,2,1]])),0);
446 execute_test (draw2d(
447     terminal='svg,
448     error_type = 'xy,
449     errors([[1,2,1,1,1,1], [3,5,3,3,1,1], [10,3,1,2,2,2], [17,6,2,1,2,1]])),0);
451 execute_test (draw2d(
452     terminal='svg,
453     error_type = 'boxes,
454     errors([[1,2,1,1,2,2], [3,5,3,3,1,1], [10,3,1,2,2,2], [17,6,2,1,2,1]])),0);
457 /* fill_color and filled_func */
458 execute_test (draw2d(
459     terminal='svg,
460     line_width=50,
461     fill_color="#FF0000",
462     filled_func=x,
463     explicit(sin(x),x,0,10),
464     fill_color="#0000FF80",
465     explicit(cos(x),x,0,10)
466 ),0);
468 gnuplot_contains_string("lc rgb '#800000ff'");
469 true$
470 gnuplot_contains_string("lc rgb '#ff0000'");
471 true$
472 execute_test (draw2d(
473     terminal='svg,
474     line_width=50,
475     fill_color='red,
476     filled_func=1,
477     explicit(sin(x),x,0,10),
478     fill_color='green,
479     explicit(cos(x),x,0,10)
480 ),0);
482 gnuplot_contains_string("lc rgb '#FF0000'");
483 true$
484 gnuplot_contains_string("lc rgb '#00FF00'");
485 true$
487 /* Test if drawing a grid works */
488 execute_test (draw2d(
489     terminal='svg,
490     explicit(sin(x),x,0,10),
491     grid=true
492 ),0);
494 gnuplot_contains("set grid xtics ytics mxtics mytics");
495 true$
496 gnuplot_contains("set mxtics 1");
497 true$
498 gnuplot_contains("set mytics 1");
499 true$
500 execute_test (draw2d(
501     terminal='svg,
502     explicit(sin(x),x,0,10),
503     grid=[10,1]
504 ),0);
506 gnuplot_contains("set grid xtics ytics mxtics mytics");
507 true$
508 gnuplot_contains("set mxtics 10");
509 true$
510 gnuplot_contains("set mytics 1");
511 true$
512 execute_test (draw2d(
513     terminal='svg,
514     explicit(sin(x),x,0,10),
515     grid=[1,10]
516 ),0);
518 gnuplot_contains("set grid xtics ytics mxtics mytics");
519 true$
520 gnuplot_contains("set mxtics 1");
521 true$
522 gnuplot_contains("set mytics 10");
523 true$
524 execute_test (draw2d(
525     terminal='svg,
526     explicit(sin(x),x,0,10),
527     grid=[1.2,10.6]
528 ),0);
530 gnuplot_contains("set grid xtics ytics mxtics mytics");
531 true$
532 gnuplot_contains("set mxtics 1");
533 true$
534 gnuplot_contains("set mytics 11");
535 true$
536 execute_test (draw2d(
537     terminal='svg,
538     explicit(sin(x),x,0,10),
539     grid=[1.6,10.4]
540 ),0);
542 gnuplot_contains("set grid xtics ytics mxtics mytics");
543 true$
544 gnuplot_contains("set mxtics 2");
545 true$
546 gnuplot_contains("set mytics 10");
547 true$
548 execute_test (draw2d(
549     terminal='svg,
550     explicit(sin(x),x,0,10),
551     grid=false
552 ),0);
554 gnuplot_contains("unset grid");
555 true$
557 /* Tests for head_length, head_angle, head_both and head_type */
558 execute_test (draw2d(
559     terminal='svg,
560     xrange      = [0,10],
561     yrange      = [0,9],
562     head_length = 0.7,
563     head_angle  = 10,
564     head_both   = false,
565     vector([1,1],[0,6]),
566     head_angle  = 20,
567     vector([2,1],[0,6]),
568     head_angle  = 30,
569     vector([3,1],[0,6]),
570     head_angle  = 40,
571     vector([4,1],[0,6]),
572     head_angle  = 60,
573     vector([5,1],[0,6]),
574     head_angle  = 90,
575     head_both   = true,
576     vector([6,1],[0,6]),
577     head_angle  = 120,
578     head_type='filled,
579     vector([7,1],[0,6]),
580     head_angle  = 160,
581     head_type='empty,
582     vector([8,1],[0,6]),
583     head_angle  = 180,
584     head_length = 0.3,
585     head_type='nofilled,
586     vector([9,1],[0,6]) ),0);
588 gnuplot_contains_string("vect head size 0.7, 10.0");
589 true$
590 gnuplot_contains_string("vect head size 0.7, 20.0");
591 true$
592 gnuplot_contains_string("vect head size 0.7, 30.0");
593 true$
594 gnuplot_contains_string("vect head size 0.7, 40.0");
595 true$
596 gnuplot_contains_string("vect head size 0.7, 60.0");
597 true$
598 gnuplot_contains_string("vect heads size 0.7, 90.0");
599 true$
600 gnuplot_contains_string("vect heads size 0.7, 120.0 filled");
601 true$
602 gnuplot_contains_string("vect heads size 0.7, 160.0 empty");
603 true$
604 gnuplot_contains_string("vect heads size 0.3, 180.0 nofilled");
605 true$
607 /* Tests for points(...) with values which are not finite reals.
608  * For implementations which permit non-finite IEEE 754 floats,
609  * the symbols infty and nan can be assigned suitable values
610  * before executing this script.
611  * For other implementations, infty and nan can be left as symbols.
613  * SBCL, Clozure CL, ECL, CMUCL, and maybe other implementations
614  * permit non-finite IEEE 754 floats. The details vary; here is
615  * an incantation for SBCL:
617  * :lisp (sb-vm::set-floating-point-modes :traps nil)
618  * :lisp (defparameter $infty (/ 1d0 0d0))
619  * :lisp (defparameter $nan (/ 0d0 0d0))
620  */
622 (xx: [2, 3, 5, 7, 11, 13, 17, 19],
623  yy: [11, 7, 17, 5, 2, 13, 19, 3],
624  xx1: copy (xx),
625  xx1[1]: xx1[8]: infty,
626  xx2: copy (xx),
627  xx2[3]: xx2[4]: xx2[5]: nan,
628  yy1: copy (yy),
629  yy1[4]: yy1[5]: nan,
630  yy2: copy (yy),
631  yy2[2]: yy2[4]: yy2[6]: infty,
632  array_from ([l]) :=
633     if length (l) = 1
634         then (make_array (any, length (l[1])), fillarray (%%, l[1]))
635         else (make_array (any, length (l), length (l[1])), fillarray (%%, apply (append, l))),
636  sanitize_nonfinite (l) := subst ([infty = 'infty, nan = 'nan], l),
637  0);
640 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx, yy), title = "points(flat-list, flat-list)"), 0);
643 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (args (transpose (matrix (xx, yy)))), title = "points(nested-list), 2 elements per sublist"), 0);
646 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (array_from (xx), array_from (yy)), title = "points(array-1d, array-1d)"), 0);
649 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (array_from (xx, yy)), title = "points(array-2d), 2 rows"), 0);
652 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (apply (array_from, args (transpose (matrix (xx, yy))))), title = "points(array-2d), 2 columns"), 0);
655 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (matrix (xx, yy)), title = "points(matrix), 2 rows"), 0);
658 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (transpose (matrix (xx, yy))), title = "points(matrix), 2 columns"), 0);
661 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx1, yy), title = "points(flat-list, flat-list)"), 0);
664 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx1, yy)))), title = "points(nested-list), 2 elements per sublist"), 0);
667 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx1), array_from (yy)), title = "points(array-1d, array-1d)"), 0);
670 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx1, yy)), title = "points(array-2d), 2 rows"), 0);
673 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx1, yy))))), title = "points(array-2d), 2 columns"), 0);
676 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx1, yy)), title = "points(matrix), 2 rows"), 0);
679 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx1, yy))), title = "points(matrix), 2 columns"), 0);
682 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx, yy1), title = "points(flat-list, flat-list)"), 0);
685 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx, yy1)))), title = "points(nested-list), 2 elements per sublist"), 0);
688 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx), array_from (yy1)), title = "points(array-1d, array-1d)"), 0);
691 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx, yy1)), title = "points(array-2d), 2 rows"), 0);
694 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx, yy1))))), title = "points(array-2d), 2 columns"), 0);
697 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx, yy1)), title = "points(matrix), 2 rows"), 0);
700 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx, yy1))), title = "points(matrix), 2 columns"), 0);
703 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx1, yy1), title = "points(flat-list, flat-list)"), 0);
706 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx1, yy1)))), title = "points(nested-list), 2 elements per sublist"), 0);
709 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx1), array_from (yy1)), title = "points(array-1d, array-1d)"), 0);
712 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx1, yy1)), title = "points(array-2d), 2 rows"), 0);
715 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx1, yy1))))), title = "points(array-2d), 2 columns"), 0);
718 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx1, yy1)), title = "points(matrix), 2 rows"), 0);
721 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx1)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy1)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx1, yy1))), title = "points(matrix), 2 columns"), 0);
724 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx2, yy), title = "points(flat-list, flat-list)"), 0);
727 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx2, yy)))), title = "points(nested-list), 2 elements per sublist"), 0);
730 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx2), array_from (yy)), title = "points(array-1d, array-1d)"), 0);
733 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx2, yy)), title = "points(array-2d), 2 rows"), 0);
736 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx2, yy))))), title = "points(array-2d), 2 columns"), 0);
739 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx2, yy)), title = "points(matrix), 2 rows"), 0);
742 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx2, yy))), title = "points(matrix), 2 columns"), 0);
745 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx, yy2), title = "points(flat-list, flat-list)"), 0);
748 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx, yy2)))), title = "points(nested-list), 2 elements per sublist"), 0);
751 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx), array_from (yy2)), title = "points(array-1d, array-1d)"), 0);
754 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx, yy2)), title = "points(array-2d), 2 rows"), 0);
757 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx, yy2))))), title = "points(array-2d), 2 columns"), 0);
760 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx, yy2)), title = "points(matrix), 2 rows"), 0);
763 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx, yy2))), title = "points(matrix), 2 columns"), 0);
766 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (xx2, yy2), title = "points(flat-list, flat-list)"), 0);
769 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (args (transpose (matrix (xx2, yy2)))), title = "points(nested-list), 2 elements per sublist"), 0);
772 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx2), array_from (yy2)), title = "points(array-1d, array-1d)"), 0);
775 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (array_from (xx2, yy2)), title = "points(array-2d), 2 rows"), 0);
778 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (apply (array_from, args (transpose (matrix (xx2, yy2))))), title = "points(array-2d), 2 columns"), 0);
781 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (matrix (xx2, yy2)), title = "points(matrix), 2 rows"), 0);
784 execute_test (draw2d (xlabel = printf (false, "x = ~a", sanitize_nonfinite (xx2)), ylabel = printf (false, "y = ~a", sanitize_nonfinite (yy2)), terminal = 'png, point_type = 7, points_joined = true, points (xx - 0.1, yy - 0.1), color = red, points (transpose (matrix (xx2, yy2))), title = "points(matrix), 2 columns"), 0);
787 /* SF bug #4424: "draw2d doesnt accept fill_density in order to create opaque shapes" */
789 execute_test (draw2d (title = "fill\\_density works!", proportional_axes = 'xy, grid = true, xrange = [-4, 0], yrange = [-3, 3], xlabel = "Re(h λ)", ylabel = "Im(h λ)", key = "stability region", transparent = false, color = blue, line_width = 1, fill_color = light_pink, fill_density = 0.3, nticks = 80, ellipse(-1, 0, 1, 1, 0, 360), terminal = 'png), 0);
792 execute_test (draw2d(fill_color = red, filled_func = true, fill_density = 0.5, explicit(-sin(x),x,0,%pi), terminal = 'png), 0);
795 block ([L: flatten (rest (arrayinfo (draw_tests), 2)), linel: 1000],
796        with_stdout (sconcat (maxima_tempdir, "/draw-tests-summary.txt"),
797            for f in L do print (f, "pertains to", string (draw_tests[f]))),
798        0);