@@ -772,46 +772,66 @@ o.spec("event", function() {
772772 } )
773773 } )
774774 o ( "async function (event.redraw = false)" , function ( done ) {
775+ var spy = o . spy ( )
775776 var div = m ( "div" , { onclick : async function ( ev ) {
776777 // set event.redraw = false to prevent redraws
777778 ev . redraw = false
779+ spy ( )
778780 } } )
779781 var e = $window . document . createEvent ( "MouseEvents" )
780782 e . initEvent ( "click" , true , true )
781783
782784 render ( root , div )
785+
786+ // event listener has not yet been called
787+ o ( spy . callCount ) . equals ( 0 )
788+
783789 div . dom . dispatchEvent ( e )
784790
791+ // event listener called but not redraw
792+ o ( spy . callCount ) . equals ( 1 )
785793 o ( redraw . callCount ) . equals ( 0 )
786794
787795 callAsync ( function ( ) {
796+ o ( spy . callCount ) . equals ( 1 )
788797 o ( redraw . callCount ) . equals ( 0 )
789798
790799 done ( )
791800 } )
792801 } )
793802 o ( "async function (event.redraw = false, await Promise)" , function ( done ) {
794803 var thenCB
804+ var spy = o . spy ( function ( resolve ) { thenCB = resolve } )
795805 var div = m ( "div" , { onclick : async function ( ev ) {
796806 // set event.redraw = false to prevent redraws
797807 ev . redraw = false
798- await new Promise ( function ( resolve ) { thenCB = resolve } )
808+ await new Promise ( spy )
799809 } } )
800810 var e = $window . document . createEvent ( "MouseEvents" )
801811 e . initEvent ( "click" , true , true )
802812
803813 render ( root , div )
814+
815+ // event listener has not yet been called
816+ o ( spy . callCount ) . equals ( 0 )
817+ o ( thenCB ) . equals ( undefined )
818+
804819 div . dom . dispatchEvent ( e )
805820
821+ // event listener called but not redraw
822+ o ( spy . callCount ) . equals ( 1 )
823+ o ( thenCB ) . notEquals ( undefined )
806824 o ( redraw . callCount ) . equals ( 0 )
807825
808826 callAsync ( function ( ) {
809827 // not resolved yet
828+ o ( spy . callCount ) . equals ( 1 )
810829 o ( redraw . callCount ) . equals ( 0 )
811830
812831 // resolve
813832 thenCB ( )
814833 callAsync ( function ( ) {
834+ o ( spy . callCount ) . equals ( 1 )
815835 o ( redraw . callCount ) . equals ( 0 )
816836
817837 done ( )
@@ -850,28 +870,38 @@ o.spec("event", function() {
850870 } )
851871 o ( "async function (event.redraw = false, await Promise, event.redraw = true)" , function ( done ) {
852872 var thenCB
873+ var spy = o . spy ( function ( resolve ) { thenCB = resolve } )
853874 var div = m ( "div" , { onclick : async function ( ev ) {
854875 // set event.redraw = false to prevent sync redraw
855876 ev . redraw = false
856- await new Promise ( function ( resolve ) { thenCB = resolve } )
877+ await new Promise ( spy )
857878 // set event.redraw = true to enable async redraw
858879 ev . redraw = true
859880 } } )
860881 var e = $window . document . createEvent ( "MouseEvents" )
861882 e . initEvent ( "click" , true , true )
862883
863884 render ( root , div )
885+
886+ // event listener has not yet been called
887+ o ( spy . callCount ) . equals ( 0 )
888+ o ( thenCB ) . equals ( undefined )
889+
864890 div . dom . dispatchEvent ( e )
865891
892+ // event listener called but not redraw
893+ o ( spy . callCount ) . equals ( 1 )
894+ o ( thenCB ) . notEquals ( undefined )
866895 o ( redraw . callCount ) . equals ( 0 )
867-
868896 callAsync ( function ( ) {
869897 // not resolved yet
898+ o ( spy . callCount ) . equals ( 1 )
870899 o ( redraw . callCount ) . equals ( 0 )
871900
872901 // resolve
873902 thenCB ( )
874903 callAsync ( function ( ) {
904+ o ( spy . callCount ) . equals ( 1 )
875905 o ( redraw . callCount ) . equals ( 1 )
876906 o ( redraw . this ) . equals ( undefined )
877907 o ( redraw . args . length ) . equals ( 0 )
@@ -917,35 +947,52 @@ o.spec("event", function() {
917947 } )
918948 } )
919949 o ( "avoid sync redraw after removal" , function ( ) {
920- var div = m ( "div" , { onclick : function ( ) { } } )
950+ var spy = o . spy ( )
951+ var div = m ( "div" , { onclick : spy } )
921952 var e = $window . document . createEvent ( "MouseEvents" )
922953 e . initEvent ( "click" , true , true )
923954
924955 render ( root , div )
925956 // remove div
926957 render ( root , [ ] )
927958
959+ // event listener has not yet been called
960+ o ( spy . callCount ) . equals ( 0 )
961+
928962 div . dom . dispatchEvent ( e )
929963
964+ // event listener called but not redraw
965+ o ( spy . callCount ) . equals ( 1 )
930966 o ( redraw . callCount ) . equals ( 0 )
931967 } )
932968 o ( "avoid async redraw after removal" , function ( done ) {
933969 var thenCB
970+ var spy = o . spy ( function ( resolve ) { thenCB = resolve } )
934971 var div = m ( "div" , { onclick : async function ( ) {
935- await new Promise ( function ( resolve ) { thenCB = resolve } )
972+ await new Promise ( spy )
936973 } } )
937974 var e = $window . document . createEvent ( "MouseEvents" )
938975 e . initEvent ( "click" , true , true )
939976
940977 render ( root , div )
978+
979+ // event listener has not yet been called
980+ o ( spy . callCount ) . equals ( 0 )
981+ o ( thenCB ) . equals ( undefined )
982+
941983 div . dom . dispatchEvent ( e )
942984
985+ // event listener called
986+ o ( spy . callCount ) . equals ( 1 )
987+ o ( thenCB ) . notEquals ( undefined )
988+
943989 o ( redraw . callCount ) . equals ( 1 )
944990 o ( redraw . this ) . equals ( undefined )
945991 o ( redraw . args . length ) . equals ( 0 )
946992
947993 callAsync ( function ( ) {
948994 // not resolved yet
995+ o ( spy . callCount ) . equals ( 1 )
949996 o ( redraw . callCount ) . equals ( 1 )
950997
951998 // remove div
@@ -954,6 +1001,7 @@ o.spec("event", function() {
9541001 // resolve
9551002 thenCB ( )
9561003 callAsync ( function ( ) {
1004+ o ( spy . callCount ) . equals ( 1 )
9571005 o ( redraw . callCount ) . equals ( 1 )
9581006
9591007 done ( )
0 commit comments