2 file_name_base:sconcat("test_",random(10^10)),
3 file_name_svg:sconcat(maxima_tempdir,"/",file_name_base),
4 file_name_gnuplot:sconcat(file_name_base,".gnuplot"),
5 file_name_data:sconcat(maxima_tempdir,"/",file_name_base,".data"),
6 file_name_data_gnuplot:sconcat(file_name_base,".data"),
7 /* Define a function that tests if the gnuplot file created by draw contains
10 gnuplot_contains([x]):=block(
12 infile:openr(sconcat(maxima_tempdir,"/",file_name_gnuplot)),
17 while(stringp(line:readline(infile))) do
28 /* Define a function that tests if the gnuplot file created by draw contains
31 gnuplot_contains_string(x):=block(
33 infile:openr(sconcat(maxima_tempdir,"/",file_name_gnuplot)),
36 while(stringp(line:readline(infile))) do
37 if numberp(ssearch(x,line)) then retval:true,
45 /* Test if "title=" affects the gnuplot file. */
47 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
48 explicit(sin(x),x,1,10)
51 gnuplot_contains("set title ''");
55 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
57 explicit(sin(x),x,1,10)
60 gnuplot_contains("set title 'Test'");
63 /* Test "contour=". */
65 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
67 explicit(sin(x*y),x,1,10,y,1,10)
71 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
73 explicit(sin(x*y),x,1,10,y,1,10)
76 gnuplot_contains("set contour base");
79 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
81 explicit(sin(x*y),x,1,10,y,1,10)
84 gnuplot_contains("set contour both");
87 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
89 explicit(sin(x*y),x,1,10,y,1,10)
92 gnuplot_contains("set contour surface");
95 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
97 explicit(sin(x*y),x,1,10,y,1,10)
100 gnuplot_contains("set contour base","unset surface");
103 /* Test "axis_3d=". */
105 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
107 explicit(sin(x*y),x,1,10,y,1,10)
110 gnuplot_contains("unset xtics", "unset ytics", "unset ztics", "set border 0");
113 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
115 explicit(sin(x*y),x,1,10,y,1,10)
118 gnuplot_contains("unset xtics");
120 gnuplot_contains("unset ytics");
122 gnuplot_contains("unset ztics");
124 gnuplot_contains("set border 0");
127 /* test the other axis_* commands */
129 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
131 explicit(sin(x),x,1,10)
134 gnuplot_contains("set border 14");
137 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
139 explicit(sin(x),x,1,10)
142 gnuplot_contains("set border 11");
145 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
147 explicit(sin(x),x,1,10)
150 gnuplot_contains("set border 13");
153 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
155 explicit(sin(x),x,1,10)
158 gnuplot_contains("set border 7");
162 /* test all combination of border and transparent */
164 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
165 border = true, transparent = true,
166 polygon([[3,2],[7,2],[5,5]])
169 gnuplot_contains_string("lt ");
171 gnuplot_contains_string("filledcurves ");
174 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
175 border = false, transparent = false,
176 polygon([[3,2],[7,2],[5,5]])
179 gnuplot_contains_string("lt ");
181 gnuplot_contains_string("filledcurves ");
184 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
185 border = true, transparent = false,
186 polygon([[3,2],[7,2],[5,5]])
189 gnuplot_contains_string("lt ");
191 gnuplot_contains_string("filledcurves ");
194 /* test background_color */
196 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
198 background_color="#FF0000",
199 explicit(sin(x),x,0,10)
202 gnuplot_contains_string("obj 1 fc rgb '#ff0000'");
205 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
207 background_color="#00FF0080",
208 explicit(sin(x),x,0,10)
211 gnuplot_contains_string("obj 1 fc rgb '#00ff0080'");
214 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
216 background_color='yellow,
217 explicit(sin(x),x,0,10)
220 gnuplot_contains_string("obj 1 fc rgb '#FFFF00'");
223 /* test line_width and line colors including semi-transparent ones */
225 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
228 explicit(sin(x),x,0,10),
230 explicit(cos(x),x,0,10)
233 gnuplot_contains_string("lw 50");
235 gnuplot_contains_string("lw 50");
237 gnuplot_contains_string("lc rgb '#800000ff'");
239 gnuplot_contains_string("lc rgb '#ff0000'");
242 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
245 explicit(sin(x),x,0,10),
247 explicit(cos(x),x,0,10)
250 gnuplot_contains_string("lc rgb '#FF0000'");
252 gnuplot_contains_string("lc rgb '#0000FF'");
257 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
258 gr2d(image(apply('matrix,
259 makelist(makelist(random(200),i,1,30),i,1,30)),0,0,30,30))
262 gnuplot_contains("set colorbox");
264 gnuplot_contains("unset colorbox");
267 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
268 gr2d(colorbox = false, image(apply('matrix,
269 makelist(makelist(random(200),i,1,30),i,1,30)),0,0,30,30))
272 gnuplot_contains("set colorbox");
274 gnuplot_contains("unset colorbox");
277 /* test "columns=" */
279 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
281 parametric(2*cos(t),5*sin(t),t,0,2*%pi)),
282 gr2d(polygon([4,5,7],[6,4,2])),
287 gnuplot_contains("set size 1.0, 0.5");
289 gnuplot_contains("set size 0.5, 1.0");
292 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
293 gr2d(title="Ellipse",
295 parametric(2*cos(t),5*sin(t),t,0,2*%pi)),
296 gr2d(title="Triangle",
297 polygon([4,5,7],[6,4,2])),
302 gnuplot_contains("set size 1.0, 0.5");
304 gnuplot_contains("set size 0.5, 1.0");
306 gnuplot_contains("set title 'Ellipse'");
308 gnuplot_contains("set title 'Triangle'");
311 /* test "allocation=" */
313 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
314 dimensions=[1123,1124],
316 explicit(x^2,x,-1,1)),
318 allocation = [[1/4, 1/4],[1/2, 1/2]],
319 explicit(x^3,x,-1,1),
325 gnuplot_contains("set size 0.5, 0.5");
327 gnuplot_contains("set origin 0.25, 0.25");
329 gnuplot_contains_string("size 1123, 1124");
334 terminal='animated_gif,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
336 gr2d(explicit(x^2,x,-1,1)),
337 gr2d(explicit(x^3,x,-1,1)),
338 gr2d(explicit(x^4,x,-1,1))),0);
340 gnuplot_contains_string("delay 100");
342 gnuplot_contains_string("set terminal gif enhanced animate");
345 /* test "enhanced3d=". In this instance we don't look at the .gnuplot file
346 but at the data this file causes gnuplot to plot instead.
349 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
350 enhanced3d='none,data_file_name=file_name_data_gnuplot,
351 points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
354 read_nested_list(file_name_data);
355 [[1.0,3.0,1.0],[2.0,5.0,7.0],[3.0,3.0,5.0],[4.0,1.0,3.0],[],[]]$
357 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
358 enhanced3d=false,data_file_name=file_name_data_gnuplot,
359 points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
362 read_nested_list(file_name_data);
363 [[1.0,3.0,1.0],[2.0,5.0,7.0],[3.0,3.0,5.0],[4.0,1.0,3.0],[],[]]$
365 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
366 enhanced3d = [x-z/10,x,y,z],data_file_name=file_name_data_gnuplot,
367 points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
370 read_nested_list(file_name_data);
371 [[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],[],[]]$
373 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
374 enhanced3d=true,data_file_name=file_name_data_gnuplot,
375 points([1,2,3,4],[3,5,3,1],[1,7,5,3])),
378 read_nested_list(file_name_data);
379 [[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],[],[]]$
381 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
382 enhanced3d = [sin(r*s),r,s],data_file_name=file_name_data_gnuplot,
383 explicit(sin(x)*sin(y),x,-2,2,y,-2,2)),
387 /* For the errors object we can at least test if using any of its variants
390 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
392 errors([[1,2,1], [3,5,3], [10,3,1], [17,6,2]])),0);
395 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
397 errors([[1,2,1], [3,5,3], [10,3,1], [17,6,2]])),0);
400 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
402 errors([[1,2,1,1], [3,5,3,2], [10,3,1,1], [17,6,2,2]])),0);
405 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
407 errors([[1,2,1,1], [3,5,3,2], [10,3,1,1], [17,6,2,2]])),0);
410 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
412 errors([[1,2,1,1], [3,5,3,3], [10,3,1,2], [17,6,2,1]])),0);
415 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
417 errors([[1,2,1,1], [3,5,3,3], [10,3,1,2], [17,6,2,1]])),0);
420 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
422 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);
425 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
427 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);
430 /* fill_color and filled_func */
432 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
434 fill_color="#FF0000",
436 explicit(sin(x),x,0,10),
437 fill_color="#0000FF80",
438 explicit(cos(x),x,0,10)
441 gnuplot_contains_string("lc rgb '#800000ff'");
443 gnuplot_contains_string("lc rgb '#ff0000'");
446 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
450 explicit(sin(x),x,0,10),
452 explicit(cos(x),x,0,10)
455 gnuplot_contains_string("lc rgb '#FF0000'");
457 gnuplot_contains_string("lc rgb '#00FF00'");
460 /* Test if drawing a grid works */
462 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
463 explicit(sin(x),x,0,10),
467 gnuplot_contains("set grid xtics ytics mxtics mytics");
469 gnuplot_contains("set mxtics 1");
471 gnuplot_contains("set mytics 1");
474 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
475 explicit(sin(x),x,0,10),
479 gnuplot_contains("set grid xtics ytics mxtics mytics");
481 gnuplot_contains("set mxtics 10");
483 gnuplot_contains("set mytics 1");
486 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
487 explicit(sin(x),x,0,10),
491 gnuplot_contains("set grid xtics ytics mxtics mytics");
493 gnuplot_contains("set mxtics 1");
495 gnuplot_contains("set mytics 10");
498 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
499 explicit(sin(x),x,0,10),
503 gnuplot_contains("set grid xtics ytics mxtics mytics");
505 gnuplot_contains("set mxtics 1");
507 gnuplot_contains("set mytics 11");
510 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
511 explicit(sin(x),x,0,10),
515 gnuplot_contains("set grid xtics ytics mxtics mytics");
517 gnuplot_contains("set mxtics 2");
519 gnuplot_contains("set mytics 10");
522 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
523 explicit(sin(x),x,0,10),
527 gnuplot_contains("unset grid");
530 /* Tests for head_length, head_angle, head_both and head_type */
532 terminal='svg,file_name=file_name_svg,gnuplot_file_name=file_name_gnuplot,
559 vector([9,1],[0,6]) ),0);
561 gnuplot_contains_string("vect head size 0.7, 10.0");
563 gnuplot_contains_string("vect head size 0.7, 20.0");
565 gnuplot_contains_string("vect head size 0.7, 30.0");
567 gnuplot_contains_string("vect head size 0.7, 40.0");
569 gnuplot_contains_string("vect head size 0.7, 60.0");
571 gnuplot_contains_string("vect heads size 0.7, 90.0");
573 gnuplot_contains_string("vect heads size 0.7, 120.0 filled");
575 gnuplot_contains_string("vect heads size 0.7, 160.0 empty");
577 gnuplot_contains_string("vect heads size 0.3, 180.0 nofilled");
581 (load("operatingsystem"),0);
583 (delete_file(sconcat(file_name_svg,".svg")),0);
585 (delete_file(sconcat(file_name_svg,".gif")),0);
587 kill(file_name_base, file_name_data, file_name_data_gnuplot, file_name_svg, file_name_gnuplot, file_name_svg, gnuplot_contains, gnuplot_contains_string);