@@ -870,6 +870,242 @@ o.spec("component", function() {
870870 }
871871 } )
872872 } )
873+ o . spec ( "vnode.domSize (vnode.instance == null)" , function ( ) {
874+ o ( "create and update" , function ( ) {
875+ var component = createComponent ( {
876+ view : function ( ) { return null }
877+ } )
878+ // create
879+ var v1 = m ( component )
880+ render ( root , v1 )
881+ o ( v1 . domSize ) . equals ( 0 )
882+ o ( v1 . instance ) . equals ( null )
883+ // update
884+ var v2 = m ( component )
885+ render ( root , v2 )
886+ o ( v2 . domSize ) . equals ( 0 )
887+ o ( v2 . instance ) . equals ( null )
888+ } )
889+ o ( "remove instance" , function ( ) {
890+ var v
891+ var component = createComponent ( {
892+ view : function ( ) { return v }
893+ } )
894+ // create (return element vnode)
895+ v = m ( "a" )
896+ var v1 = m ( component )
897+ render ( root , v1 )
898+ o ( v1 . instance . tag ) . equals ( "a" )
899+ o ( v1 . domSize ) . equals ( undefined )
900+ o ( v1 . instance . domSize ) . equals ( undefined )
901+ // remove instance (return null)
902+ v = null
903+ var v2 = m ( component )
904+ render ( root , v2 )
905+ o ( v2 . domSize ) . equals ( 0 )
906+ o ( v2 . instance ) . equals ( null )
907+ } )
908+ o ( "nested component" , function ( ) {
909+ var childComponent = createComponent ( {
910+ view : function ( ) { return null }
911+ } )
912+ var parentComponent = createComponent ( {
913+ view : function ( ) { return m ( childComponent ) }
914+ } )
915+ // create
916+ var v1 = m ( parentComponent )
917+ render ( root , v1 )
918+ o ( v1 . domSize ) . equals ( 0 )
919+ o ( v1 . instance . domSize ) . equals ( 0 )
920+ o ( v1 . instance . instance ) . equals ( null )
921+ // update
922+ var v2 = m ( parentComponent )
923+ render ( root , v2 )
924+ o ( v2 . domSize ) . equals ( 0 )
925+ o ( v2 . instance . domSize ) . equals ( 0 )
926+ o ( v2 . instance . instance ) . equals ( null )
927+ } )
928+ } )
929+ o . spec ( "vnode.domSize equals vnode.instance.domSize (vnode.instance != null)" , function ( ) {
930+ o ( "text" , function ( ) {
931+ var component = createComponent ( {
932+ view : function ( ) { return "text" }
933+ } )
934+ // create
935+ var v1 = m ( component )
936+ render ( root , v1 )
937+ o ( v1 . instance . tag ) . equals ( "#" )
938+ o ( v1 . domSize ) . equals ( undefined )
939+ o ( v1 . instance . domSize ) . equals ( undefined )
940+ o ( v1 . dom ) . equals ( v1 . instance . dom )
941+ // update
942+ var v2 = m ( component )
943+ render ( root , v2 )
944+ o ( v2 . instance . tag ) . equals ( "#" )
945+ o ( v2 . domSize ) . equals ( undefined )
946+ o ( v2 . instance . domSize ) . equals ( undefined )
947+ o ( v2 . dom ) . equals ( v2 . instance . dom )
948+ } )
949+ o ( "element" , function ( ) {
950+ var component = createComponent ( {
951+ view : function ( ) { return m ( "a" ) }
952+ } )
953+ // create
954+ var v1 = m ( component )
955+ render ( root , v1 )
956+ o ( v1 . instance . tag ) . equals ( "a" )
957+ o ( v1 . domSize ) . equals ( undefined )
958+ o ( v1 . instance . domSize ) . equals ( undefined )
959+ o ( v1 . dom ) . equals ( v1 . instance . dom )
960+ // update
961+ var v2 = m ( component )
962+ render ( root , v2 )
963+ o ( v2 . instance . tag ) . equals ( "a" )
964+ o ( v2 . domSize ) . equals ( undefined )
965+ o ( v2 . instance . domSize ) . equals ( undefined )
966+ o ( v2 . dom ) . equals ( v2 . instance . dom )
967+ } )
968+ o ( "trust(0)" , function ( ) {
969+ var component = createComponent ( {
970+ view : function ( ) { return m . trust ( "" ) }
971+ } )
972+ // create
973+ var v1 = m ( component )
974+ render ( root , v1 )
975+ o ( v1 . instance . tag ) . equals ( "<" )
976+ o ( v1 . domSize ) . equals ( 0 )
977+ o ( v1 . instance . domSize ) . equals ( 0 )
978+ o ( v1 . dom ) . equals ( v1 . instance . dom )
979+ // update
980+ var v2 = m ( component )
981+ render ( root , v2 )
982+ o ( v2 . instance . tag ) . equals ( "<" )
983+ o ( v2 . domSize ) . equals ( 0 )
984+ o ( v2 . instance . domSize ) . equals ( 0 )
985+ o ( v2 . dom ) . equals ( v2 . instance . dom )
986+ } )
987+ o ( "trust(1)" , function ( ) {
988+ var component = createComponent ( {
989+ view : function ( ) { return m . trust ( "<a></a>" ) }
990+ } )
991+ // create
992+ var v1 = m ( component )
993+ render ( root , v1 )
994+ o ( v1 . instance . tag ) . equals ( "<" )
995+ o ( v1 . domSize ) . equals ( 1 )
996+ o ( v1 . instance . domSize ) . equals ( 1 )
997+ o ( v1 . dom ) . equals ( v1 . instance . dom )
998+ // update
999+ var v2 = m ( component )
1000+ render ( root , v2 )
1001+ o ( v2 . instance . tag ) . equals ( "<" )
1002+ o ( v2 . domSize ) . equals ( 1 )
1003+ o ( v2 . instance . domSize ) . equals ( 1 )
1004+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1005+ } )
1006+ o ( "trust(2)" , function ( ) {
1007+ var component = createComponent ( {
1008+ view : function ( ) { return m . trust ( "<a></a><b></b>" ) }
1009+ } )
1010+ // create
1011+ var v1 = m ( component )
1012+ render ( root , v1 )
1013+ o ( v1 . instance . tag ) . equals ( "<" )
1014+ o ( v1 . domSize ) . equals ( 2 )
1015+ o ( v1 . instance . domSize ) . equals ( 2 )
1016+ o ( v1 . dom ) . equals ( v1 . instance . dom )
1017+ // update
1018+ var v2 = m ( component )
1019+ render ( root , v2 )
1020+ o ( v2 . instance . tag ) . equals ( "<" )
1021+ o ( v2 . domSize ) . equals ( 2 )
1022+ o ( v2 . instance . domSize ) . equals ( 2 )
1023+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1024+ } )
1025+ o ( "fragment(0)" , function ( ) {
1026+ var component = createComponent ( {
1027+ view : function ( ) { return [ ] }
1028+ } )
1029+ // create
1030+ var v1 = m ( component )
1031+ render ( root , v1 )
1032+ o ( v1 . instance . tag ) . equals ( "[" )
1033+ o ( v1 . domSize ) . equals ( 0 )
1034+ o ( v1 . instance . domSize ) . equals ( 0 )
1035+ o ( v1 . dom ) . equals ( v1 . instance . dom )
1036+ // update
1037+ var v2 = m ( component )
1038+ render ( root , v2 )
1039+ o ( v2 . instance . tag ) . equals ( "[" )
1040+ o ( v2 . domSize ) . equals ( 0 )
1041+ o ( v2 . instance . domSize ) . equals ( 0 )
1042+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1043+ } )
1044+ o ( "fragment(1)" , function ( ) {
1045+ var component = createComponent ( {
1046+ view : function ( ) { return [ m ( "a" ) ] }
1047+ } )
1048+ // create
1049+ var v1 = m ( component )
1050+ render ( root , v1 )
1051+ o ( v1 . instance . tag ) . equals ( "[" )
1052+ o ( v1 . domSize ) . equals ( 1 )
1053+ o ( v1 . instance . domSize ) . equals ( 1 )
1054+ o ( v1 . dom ) . equals ( v1 . instance . dom )
1055+ // update
1056+ var v2 = m ( component )
1057+ render ( root , v2 )
1058+ o ( v2 . instance . tag ) . equals ( "[" )
1059+ o ( v2 . domSize ) . equals ( 1 )
1060+ o ( v2 . instance . domSize ) . equals ( 1 )
1061+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1062+ } )
1063+ o ( "fragment(2)" , function ( ) {
1064+ var component = createComponent ( {
1065+ view : function ( ) { return [ m ( "a" ) , m ( "b" ) ] }
1066+ } )
1067+ // create
1068+ var v1 = m ( component )
1069+ render ( root , v1 )
1070+ o ( v1 . instance . tag ) . equals ( "[" )
1071+ o ( v1 . domSize ) . equals ( 2 )
1072+ o ( v1 . instance . domSize ) . equals ( 2 )
1073+ o ( v1 . dom ) . equals ( v1 . instance . dom )
1074+ // update
1075+ var v2 = m ( component )
1076+ render ( root , v2 )
1077+ o ( v2 . instance . tag ) . equals ( "[" )
1078+ o ( v2 . domSize ) . equals ( 2 )
1079+ o ( v2 . instance . domSize ) . equals ( 2 )
1080+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1081+ } )
1082+ o ( "nested component" , function ( ) {
1083+ var childComponent = createComponent ( {
1084+ view : function ( ) { return [ m ( "a" ) , m ( "b" ) ] }
1085+ } )
1086+ var parentComponent = createComponent ( {
1087+ view : function ( ) { return m ( childComponent ) }
1088+ } )
1089+ // create
1090+ var v1 = m ( parentComponent )
1091+ render ( root , v1 )
1092+ o ( v1 . instance . instance . tag ) . equals ( "[" )
1093+ o ( v1 . domSize ) . equals ( 2 )
1094+ o ( v1 . instance . domSize ) . equals ( 2 )
1095+ o ( v1 . instance . instance . domSize ) . equals ( 2 )
1096+ o ( v1 . dom ) . equals ( v1 . instance . dom )
1097+ o ( v1 . instance . dom ) . equals ( v1 . instance . instance . dom )
1098+ // update
1099+ var v2 = m ( parentComponent )
1100+ render ( root , v2 )
1101+ o ( v2 . instance . instance . tag ) . equals ( "[" )
1102+ o ( v2 . domSize ) . equals ( 2 )
1103+ o ( v2 . instance . domSize ) . equals ( 2 )
1104+ o ( v2 . instance . instance . domSize ) . equals ( 2 )
1105+ o ( v2 . dom ) . equals ( v2 . instance . dom )
1106+ o ( v2 . instance . dom ) . equals ( v2 . instance . instance . dom )
1107+ } )
1108+ } )
8731109 } )
8741110 } )
8751111 o . spec ( "Tests specific to certain component kinds" , function ( ) {
0 commit comments