@@ -559,6 +559,94 @@ describe('RubyToBlocksConverter/Sensing', () => {
559559 expectNoArgsMethod ( 'sensing_mousedown' , 'Mouse.down?' , 'value_boolean' ) ;
560560 expectNoArgsMethod ( 'sensing_mousex' , 'Mouse.x' , 'value' ) ;
561561 expectNoArgsMethod ( 'sensing_mousey' , 'Mouse.y' , 'value' ) ;
562+
563+ describe ( 'sensing_setdragmode' , ( ) => {
564+ test ( 'normal' , ( ) => {
565+ code = 'self.drag_mode = "draggable"' ;
566+ expected = [
567+ {
568+ opcode : 'sensing_setdragmode' ,
569+ fields : [
570+ {
571+ name : 'DRAG_MODE' ,
572+ value : 'draggable'
573+ }
574+ ]
575+ }
576+ ] ;
577+ convertAndExpectToEqualBlocks ( converter , target , code , expected ) ;
578+
579+ code = 'self.drag_mode = "not draggable"' ;
580+ expected = [
581+ {
582+ opcode : 'sensing_setdragmode' ,
583+ fields : [
584+ {
585+ name : 'DRAG_MODE' ,
586+ value : 'not draggable'
587+ }
588+ ]
589+ }
590+ ] ;
591+ convertAndExpectToEqualBlocks ( converter , target , code , expected ) ;
592+ } ) ;
593+
594+ test ( 'true/false' , ( ) => {
595+ code = 'self.drag_mode = true' ;
596+ expected = [
597+ {
598+ opcode : 'sensing_setdragmode' ,
599+ fields : [
600+ {
601+ name : 'DRAG_MODE' ,
602+ value : 'draggable'
603+ }
604+ ]
605+ }
606+ ] ;
607+ convertAndExpectToEqualBlocks ( converter , target , code , expected ) ;
608+
609+ code = 'self.drag_mode = false' ;
610+ expected = [
611+ {
612+ opcode : 'sensing_setdragmode' ,
613+ fields : [
614+ {
615+ name : 'DRAG_MODE' ,
616+ value : 'not draggable'
617+ }
618+ ]
619+ }
620+ ] ;
621+ convertAndExpectToEqualBlocks ( converter , target , code , expected ) ;
622+ } ) ;
623+
624+ test ( 'statement' , ( ) => {
625+ code = `
626+ bounce_if_on_edge
627+ self.drag_mode = "draggable"
628+ bounce_if_on_edge
629+ ` ;
630+ expected = [
631+ rubyToExpected ( converter , target , 'bounce_if_on_edge' ) [ 0 ]
632+ ] ;
633+ expected [ 0 ] . next = rubyToExpected ( converter , target , 'self.drag_mode = "draggable"' ) [ 0 ] ;
634+ expected [ 0 ] . next . next = rubyToExpected ( converter , target , 'bounce_if_on_edge' ) [ 0 ] ;
635+ convertAndExpectToEqualBlocks ( converter , target , code , expected ) ;
636+ } ) ;
637+
638+ test ( 'invalid' , ( ) => {
639+ [
640+ 'self.drag_mode' ,
641+ 'self.drag_mode()' ,
642+ 'self.drag_mode = "invalid"' ,
643+ 'self.drag_mode = 1'
644+ ] . forEach ( c => {
645+ convertAndExpectToEqualRubyStatement ( converter , target , c , c ) ;
646+ } ) ;
647+ } ) ;
648+ } ) ;
649+
562650 expectNoArgsMethod ( 'sensing_loudness' , 'loudness' , 'value' ) ;
563651 expectNoArgsMethod ( 'sensing_timer' , 'Timer.value' , 'value' ) ;
564652 expectNoArgsMethod ( 'sensing_resettimer' , 'Timer.reset' ) ;
0 commit comments