@@ -283,6 +283,61 @@ suite('Navigation', function () {
283283 'tooltip' : '' ,
284284 'helpUrl' : '' ,
285285 } ,
286+ {
287+ 'type' : 'buttons' ,
288+ 'message0' : 'If %1 %2 Then %3 %4 more %5 %6 %7' ,
289+ 'args0' : [
290+ {
291+ 'type' : 'field_image' ,
292+ 'name' : 'BUTTON1' ,
293+ 'src' : 'https://www.gstatic.com/codesite/ph/images/star_on.gif' ,
294+ 'width' : 30 ,
295+ 'height' : 30 ,
296+ 'alt' : '*' ,
297+ } ,
298+ {
299+ 'type' : 'input_value' ,
300+ 'name' : 'VALUE1' ,
301+ 'check' : '' ,
302+ } ,
303+ {
304+ 'type' : 'field_image' ,
305+ 'name' : 'BUTTON2' ,
306+ 'src' : 'https://www.gstatic.com/codesite/ph/images/star_on.gif' ,
307+ 'width' : 30 ,
308+ 'height' : 30 ,
309+ 'alt' : '*' ,
310+ } ,
311+ {
312+ 'type' : 'input_dummy' ,
313+ 'name' : 'DUMMY1' ,
314+ 'check' : '' ,
315+ } ,
316+ {
317+ 'type' : 'input_value' ,
318+ 'name' : 'VALUE2' ,
319+ 'check' : '' ,
320+ } ,
321+ {
322+ 'type' : 'input_statement' ,
323+ 'name' : 'STATEMENT1' ,
324+ 'check' : 'Number' ,
325+ } ,
326+ {
327+ 'type' : 'field_image' ,
328+ 'name' : 'BUTTON3' ,
329+ 'src' : 'https://www.gstatic.com/codesite/ph/images/star_on.gif' ,
330+ 'width' : 30 ,
331+ 'height' : 30 ,
332+ 'alt' : '*' ,
333+ } ,
334+ ] ,
335+ 'previousStatement' : null ,
336+ 'nextStatement' : null ,
337+ 'colour' : 230 ,
338+ 'tooltip' : '' ,
339+ 'helpUrl' : '' ,
340+ } ,
286341 ] ) ;
287342 const noNextConnection = this . workspace . newBlock ( 'top_connection' ) ;
288343 const fieldAndInputs = this . workspace . newBlock ( 'fields_and_input' ) ;
@@ -313,6 +368,27 @@ suite('Navigation', function () {
313368 const outputNextBlock = this . workspace . newBlock ( 'output_next' ) ;
314369 this . blocks . secondBlock = secondBlock ;
315370 this . blocks . outputNextBlock = outputNextBlock ;
371+
372+ const buttonBlock = this . workspace . newBlock ( 'buttons' ) ;
373+ const buttonInput1 = this . workspace . newBlock ( 'field_input' ) ;
374+ const buttonInput2 = this . workspace . newBlock ( 'field_input' ) ;
375+ buttonBlock . inputList [ 0 ] . connection . connect (
376+ buttonInput1 . outputConnection ,
377+ ) ;
378+ buttonBlock . inputList [ 2 ] . connection . connect (
379+ buttonInput2 . outputConnection ,
380+ ) ;
381+ // Make buttons by adding a click handler
382+ const clickHandler = function ( ) {
383+ return ;
384+ } ;
385+ buttonBlock . getField ( 'BUTTON1' ) . setOnClickHandler ( clickHandler ) ;
386+ buttonBlock . getField ( 'BUTTON2' ) . setOnClickHandler ( clickHandler ) ;
387+ buttonBlock . getField ( 'BUTTON3' ) . setOnClickHandler ( clickHandler ) ;
388+ this . blocks . buttonBlock = buttonBlock ;
389+ this . blocks . buttonInput1 = buttonInput1 ;
390+ this . blocks . buttonInput2 = buttonInput2 ;
391+
316392 this . workspace . cleanUp ( ) ;
317393 } ) ;
318394 suite ( 'Next' , function ( ) {
@@ -427,6 +503,20 @@ suite('Navigation', function () {
427503 const nextNode = this . navigator . getNextSibling ( icons [ 0 ] ) ;
428504 assert . isNull ( nextNode ) ;
429505 } ) ;
506+ test ( 'fromBlockToFieldInNextInput' , function ( ) {
507+ const field = this . blocks . buttonBlock . getField ( 'BUTTON2' ) ;
508+ const prevNode = this . navigator . getNextSibling (
509+ this . blocks . buttonInput1 ,
510+ ) ;
511+ assert . equal ( prevNode , field ) ;
512+ } ) ;
513+ test ( 'fromBlockToFieldSkippingInput' , function ( ) {
514+ const field = this . blocks . buttonBlock . getField ( 'BUTTON3' ) ;
515+ const prevNode = this . navigator . getNextSibling (
516+ this . blocks . buttonInput2 ,
517+ ) ;
518+ assert . equal ( prevNode , field ) ;
519+ } ) ;
430520 } ) ;
431521
432522 suite ( 'Previous' , function ( ) {
@@ -541,6 +631,20 @@ suite('Navigation', function () {
541631 const prevNode = this . navigator . getPreviousSibling ( icons [ 0 ] ) ;
542632 assert . isNull ( prevNode ) ;
543633 } ) ;
634+ test ( 'fromBlockToFieldInSameInput' , function ( ) {
635+ const field = this . blocks . buttonBlock . getField ( 'BUTTON1' ) ;
636+ const prevNode = this . navigator . getPreviousSibling (
637+ this . blocks . buttonInput1 ,
638+ ) ;
639+ assert . equal ( prevNode , field ) ;
640+ } ) ;
641+ test ( 'fromBlockToFieldInPrevInput' , function ( ) {
642+ const field = this . blocks . buttonBlock . getField ( 'BUTTON2' ) ;
643+ const prevNode = this . navigator . getPreviousSibling (
644+ this . blocks . buttonInput2 ,
645+ ) ;
646+ assert . equal ( prevNode , field ) ;
647+ } ) ;
544648 } ) ;
545649
546650 suite ( 'In' , function ( ) {
0 commit comments