@@ -2816,35 +2816,135 @@ mod tests {
28162816
28172817 #[ test]
28182818 fn test_draw ( ) {
2819+ let tests = [
2820+ ( "draw clear 10 20 30" , DrawCommand :: Clear {
2821+ r : 10 ,
2822+ g : 20 ,
2823+ b : 30 ,
2824+ } ) ,
2825+ ( "draw color 10 20 30 40" , DrawCommand :: Color {
2826+ r : 10 ,
2827+ g : 20 ,
2828+ b : 30 ,
2829+ a : 40 ,
2830+ } ) ,
2831+ ( "draw col %[black]" , DrawCommand :: Color {
2832+ r : 0 ,
2833+ g : 0 ,
2834+ b : 0 ,
2835+ a : 255 ,
2836+ } ) ,
2837+ ( "draw col %[royal]" , DrawCommand :: Color {
2838+ r : 0x41 ,
2839+ g : 0x69 ,
2840+ b : 0xe1 ,
2841+ a : 0xff ,
2842+ } ) ,
2843+ ( "draw stroke 5" , DrawCommand :: Stroke { width : 5 } ) ,
2844+ ( "draw line 10 20 30 40" , DrawCommand :: Line {
2845+ x1 : 10 ,
2846+ y1 : 20 ,
2847+ x2 : 30 ,
2848+ y2 : 40 ,
2849+ } ) ,
2850+ ( "draw rect 10 20 30 40" , DrawCommand :: Rect {
2851+ x : 10 ,
2852+ y : 20 ,
2853+ width : 30 ,
2854+ height : 40 ,
2855+ fill : true ,
2856+ } ) ,
2857+ ( "draw lineRect 10 20 30 40" , DrawCommand :: Rect {
2858+ x : 10 ,
2859+ y : 20 ,
2860+ width : 30 ,
2861+ height : 40 ,
2862+ fill : false ,
2863+ } ) ,
2864+ ( "draw poly 10 20 30 40 359" , DrawCommand :: Poly {
2865+ x : 10 ,
2866+ y : 20 ,
2867+ sides : 30 ,
2868+ radius : 40 ,
2869+ rotation : 359 ,
2870+ fill : true ,
2871+ } ) ,
2872+ ( "draw linePoly 10 20 30 40 359" , DrawCommand :: Poly {
2873+ x : 10 ,
2874+ y : 20 ,
2875+ sides : 30 ,
2876+ radius : 40 ,
2877+ rotation : 359 ,
2878+ fill : false ,
2879+ } ) ,
2880+ ( "draw triangle 10 20 30 40 50 60" , DrawCommand :: Triangle {
2881+ x1 : 10 ,
2882+ y1 : 20 ,
2883+ x2 : 30 ,
2884+ y2 : 40 ,
2885+ x3 : 50 ,
2886+ y3 : 60 ,
2887+ } ) ,
2888+ ( "draw image 10 20 @copper 30 359" , DrawCommand :: Image {
2889+ x : 10 ,
2890+ y : 20 ,
2891+ image : Some ( Content :: Item ( content:: items:: FROM_NAME [ "copper" ] ) ) ,
2892+ size : 30 ,
2893+ rotation : 359 ,
2894+ } ) ,
2895+ ( "draw print 10 20 @bottomLeft" , DrawCommand :: Print {
2896+ x : 10 ,
2897+ y : 20 ,
2898+ alignment : TextAlignment :: BOTTOM_LEFT ,
2899+ text : u16str ! ( "a\n b" ) . into ( ) ,
2900+ } ) ,
2901+ ( "draw translate 10 20" , DrawCommand :: Translate {
2902+ x : 10 ,
2903+ y : 20 ,
2904+ } ) ,
2905+ ( "draw scale 10 20" , DrawCommand :: Scale {
2906+ x : 10 * 20 ,
2907+ y : 20 * 20 ,
2908+ } ) ,
2909+ ( "draw rotate 359" , DrawCommand :: Rotate { degrees : 359 } ) ,
2910+ ( "draw reset" , DrawCommand :: Reset ) ,
2911+ ] ;
2912+
28192913 let mut vm = single_processor_vm (
28202914 HYPER_PROCESSOR ,
2821- "
2822- draw clear 0 0 0
2823- draw color 0 0 0 255
2824- draw col 0
2825- draw stroke 0
2826- draw line 0 0 0 255
2827- draw rect 0 0 0 255
2828- draw lineRect 0 0 0 255
2829- draw poly 0 0 0 255 0
2830- draw linePoly 0 0 0 255 0
2831- draw triangle 0 0 0 255 0 0
2832- draw image 0 0 @copper 32 0
2833- draw print 0 0 @bottomLeft
2834- draw translate 0 0
2835- draw scale 0 0
2836- draw rotate 0
2837- draw reset
2838-
2839- draw triangle var1 var2 var3 var4 var5 var6
2840-
2841- drawflush display1
2842- stop
2843- " ,
2915+ & format ! (
2916+ r#"
2917+ print "a\nb"
2918+
2919+ {}
2920+
2921+ wait 0.5
2922+
2923+ draw triangle var1 var2 var3 var4 var5 var6
2924+
2925+ drawflush display1
2926+ stop
2927+ "# ,
2928+ tests. iter( ) . map( |v| v. 0 ) . join( "\n " ) ,
2929+ ) ,
28442930 ) ;
2845- run ( & mut vm, 1 , true ) ;
2931+
2932+ vm. do_tick ( Duration :: ZERO ) ;
2933+
2934+ with_processor ( & mut vm, ( 0 , 0 ) , |processor| {
2935+ assert_eq ! ( processor. state. drawbuffer_len, tests. len( ) + 1 ) ;
2936+ assert_eq ! (
2937+ processor. state. drawbuffer,
2938+ tests. into_iter( ) . map( |v| v. 1 ) . collect_vec( )
2939+ ) ;
2940+ assert_eq ! ( processor. state. printbuffer, U16String :: new( ) ) ;
2941+ } ) ;
2942+
2943+ vm. do_tick ( Duration :: from_secs ( 1 ) ) ;
28462944
28472945 let processor = take_processor ( & mut vm, ( 0 , 0 ) ) ;
2946+ assert_eq ! ( processor. state. drawbuffer_len, 0 ) ;
2947+ assert_eq ! ( processor. state. drawbuffer, vec![ ] ) ;
28482948 for name in [
28492949 u16str ! ( "var1" ) ,
28502950 u16str ! ( "var2" ) ,
0 commit comments