チェンジセット 323

差分発生行の前後
無視リスト:
コミット日時:
2008/09/05 14:45:43 (14 年前)
コミッタ:
shinomiya
ログメッセージ:

#522 SSJSのテストケースを修正。JavaScriptでは、プロパティ定義順番は不定であることの対応。
ただし、Debug.console()関連のテストは、期待値文字列の順番を入れ替えただけです。。。
(∵プロパティの順不同かつ型名が正しいことを確認する良い方法が思いつかなかったため)

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jssp/src/test/js/jssp/script/api/im_json_test.js

    r313 r323  
    8484            input.obj.bol = false; 
    8585 
     86 
    8687        var expected = "{\"ary\" : [], \"ary2\" : [\"[\\\"im-jssp-rpc\\\\\\\"a\\\\\\\"\\\"]\", \"[\\\"im-jssp-rpc\\\"a\\\"\\\"]\"], \"str\" : \"string\", \"num\" : -1, \"bol\" : true, \"obj\" : {\"ary\" : [], \"ary2\" : [\"\\\",\\\\,\\\\/,\\\\b,\\\\f,\\\\n,\\\\r,\\\\t,\\\\u\", \",/,\\b,\\f,\\n,\\r,\\t,u\"], \"str\" : \"string1\", \"num\" : 0, \"bol\" : false}}"; 
    87  
     88         
     89        Debug.print("testToJSONString007_JSON文字列変換"); 
    8890        Debug.console("ImJson.toJSONString(input)", ImJson.toJSONString(input)); 
    8991        Debug.console("expected", expected); 
    90  
    91         JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     92//      JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     93 
     94        // JavaScriptでは、プロパティの定義順番までは考慮されていません。 
     95        eval("var expectedObj = " + expected); 
     96        eval("var actualObj   = " + ImJson.toJSONString(input)); 
     97         
     98        JsUnit.assertEquals("ary", 0 , actualObj.ary.length ); 
     99        JsUnit.assertEquals("ary2", 2 , actualObj.ary2.length ); 
     100        JsUnit.assertEquals("ary2[0]", expectedObj.ary2[0] , actualObj.ary2[0] ); 
     101        JsUnit.assertEquals("ary2[1]", expectedObj.ary2[1] , actualObj.ary2[1] ); 
     102        JsUnit.assertEquals("str", expectedObj.str , actualObj.str ); 
     103        JsUnit.assertEquals("num", expectedObj.num , actualObj.num ); 
     104        JsUnit.assertEquals("bol", expectedObj.bol , actualObj.bol ); 
     105        JsUnit.assertEquals("num", expectedObj.num , actualObj.num ); 
     106        JsUnit.assertEquals("obj.ary", 0 , actualObj.obj.ary.length ); 
     107        JsUnit.assertEquals("actualObj.obj.ary2", 2 , actualObj.obj.ary2.length ); 
     108        JsUnit.assertEquals("obj.ary2[0]",  expectedObj.obj.ary2[0] ,  actualObj.obj.ary2[0] ); 
     109        JsUnit.assertEquals("obj.ary2[1]",  expectedObj.obj.ary2[1] ,  actualObj.obj.ary2[1] ); 
     110        JsUnit.assertEquals("obj.str", expectedObj.obj.str , actualObj.obj.str ); 
     111        JsUnit.assertEquals("obj.num", expectedObj.obj.num , actualObj.obj.num ); 
     112        JsUnit.assertEquals("obj.bol", expectedObj.obj.bol , actualObj.obj.bol ); 
     113 
    92114} 
    93115 
     
    293315 
    294316        var expected = "{\"prop_null\" : null, \"prop_undefined\" : undefined, \"prop_string\" : \"文字列\", \"prop_number\" : 1234567890, \"prop_boolean\" : false, \"prop_object\" : {\"inner_obj_string\" : \"テスト\", \"inner_obj_number\" : -12345}, \"prop_array\" : [\"テスト\", -12345]}"; 
    295  
    296         JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     317//      JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     318         
     319        // JavaScriptでは、プロパティの定義順番までは考慮されていません。 
     320        eval("var expectedObj = " + expected); 
     321        eval("var actualObj   = " + ImJson.toJSONString(input)); 
     322         
     323        JsUnit.assertEquals("prop_null", expectedObj.prop_null , actualObj.prop_null ); 
     324        JsUnit.assertEquals("prop_undefined", expectedObj.prop_undefined , actualObj.prop_undefined ); 
     325        JsUnit.assertEquals("prop_string", expectedObj.prop_string , actualObj.prop_string ); 
     326        JsUnit.assertEquals("prop_number", expectedObj.prop_number , actualObj.prop_number ); 
     327        JsUnit.assertEquals("prop_boolean", expectedObj.prop_boolean , actualObj.prop_boolean ); 
     328        JsUnit.assertEquals("prop_functionはundefinedであること", undefined , actualObj.prop_function ); 
     329        JsUnit.assertEquals("prop_object.inner_obj_string", expectedObj.prop_object.inner_obj_string , actualObj.prop_object.inner_obj_string ); 
     330        JsUnit.assertEquals("prop_object.inner_obj_number", expectedObj.prop_object.inner_obj_number , actualObj.prop_object.inner_obj_number ); 
     331        JsUnit.assertEquals("prop_array", 2 , actualObj.prop_array.length ); 
     332        JsUnit.assertEquals("prop_array[0]", expectedObj.prop_array[0] , actualObj.prop_array[0] ); 
     333        JsUnit.assertEquals("prop_array[1]", expectedObj.prop_array[1] , actualObj.prop_array[1] ); 
     334 
    297335} 
    298336 
     
    434472"/* Object */\n\ 
    435473{\n\ 
     474    /* String */\n\ 
     475    \"str\" : \"string\", \n\ 
     476\n\ 
     477    /* Object */\n\ 
     478    \"obj\" : {\n\ 
     479        /* String */\n\ 
     480        \"str\" : \"string1\", \n\ 
     481\n\ 
     482        /* Boolean */\n\ 
     483        \"bol\" : false, \n\ 
     484\n\ 
     485        /* Array */\n\ 
     486        \"ary2\" : [\n\ 
     487            /* String */\n\ 
     488            \"\\\",\\\\,\\\\/,\\\\b,\\\\f,\\\\n,\\\\r,\\\\t,\\\\u\", \n\ 
     489\n\ 
     490            /* String */\n\ 
     491            \",/,\\b,\\f,\\n,\\r,\\t,u\"\n\ 
     492        ], \n\ 
     493\n\ 
     494        /* Array */\n\ 
     495        \"ary\" : [\n\ 
     496            \n\ 
     497        ], \n\ 
     498\n\ 
     499        /* Number */\n\ 
     500        \"num\" : 0\n\ 
     501    }, \n\ 
     502\n\ 
     503    /* Boolean */\n\ 
     504    \"bol\" : true, \n\ 
     505\n\ 
     506    /* Array */\n\ 
     507    \"ary2\" : [\n\ 
     508        /* String */\n\ 
     509        \"[\\\"im-jssp-rpc\\\\\\\"a\\\\\\\"\\\"]\", \n\ 
     510\n\ 
     511        /* String */\n\ 
     512        \"[\\\"im-jssp-rpc\\\"a\\\"\\\"]\"\n\ 
     513    ], \n\ 
     514\n\ 
    436515    /* Array */\n\ 
    437516    \"ary\" : [\n\ 
     
    439518    ], \n\ 
    440519\n\ 
    441     /* Array */\n\ 
    442     \"ary2\" : [\n\ 
    443         /* String */\n\ 
    444         \"[\\\"im-jssp-rpc\\\\\\\"a\\\\\\\"\\\"]\", \n\ 
    445 \n\ 
    446         /* String */\n\ 
    447         \"[\\\"im-jssp-rpc\\\"a\\\"\\\"]\"\n\ 
    448     ], \n\ 
    449 \n\ 
    450     /* String */\n\ 
    451     \"str\" : \"string\", \n\ 
    452 \n\ 
    453520    /* Number */\n\ 
    454     \"num\" : -1, \n\ 
    455 \n\ 
    456     /* Boolean */\n\ 
    457     \"bol\" : true, \n\ 
    458 \n\ 
    459     /* Object */\n\ 
    460     \"obj\" : {\n\ 
    461         /* Array */\n\ 
    462         \"ary\" : [\n\ 
    463             \n\ 
    464         ], \n\ 
    465 \n\ 
    466         /* Array */\n\ 
    467         \"ary2\" : [\n\ 
    468             /* String */\n\ 
    469             \"\\\",\\\\,\\\\/,\\\\b,\\\\f,\\\\n,\\\\r,\\\\t,\\\\u\", \n\ 
    470 \n\ 
    471             /* String */\n\ 
    472             \",/,\\b,\\f,\\n,\\r,\\t,u\"\n\ 
    473         ], \n\ 
    474 \n\ 
    475         /* String */\n\ 
    476         \"str\" : \"string1\", \n\ 
    477 \n\ 
    478         /* Number */\n\ 
    479         \"num\" : 0, \n\ 
    480 \n\ 
    481         /* Boolean */\n\ 
    482         \"bol\" : false\n\ 
    483     }\n\ 
     521    \"num\" : -1\n\ 
    484522}"; 
    485523 
     524        Debug.print("testToJSONString023_DebugConsole用_JSON文字列変換"); 
    486525        Debug.console("ImJson.toJSONString(input, true)", ImJson.toJSONString(input, true)); 
    487526        Debug.console("expected", expected); 
     
    690729"/* Object */\n\ 
    691730{\n\ 
     731    /* Boolean */\n\ 
     732    \"prop_boolean\" : false, \n\ 
     733\n\ 
    692734    /* Null */\n\ 
    693735    \"prop_null\" : null, \n\ 
    694736\n\ 
    695     /* Undefined */\n\ 
    696     \"prop_undefined\" : undefined, \n\ 
    697 \n\ 
    698     /* String */\n\ 
    699     \"prop_string\" : \"文字列\", \n\ 
    700 \n\ 
    701737    /* Number */\n\ 
    702738    \"prop_number\" : 1234567890, \n\ 
    703739\n\ 
    704     /* Boolean */\n\ 
    705     \"prop_boolean\" : false, \n\ 
    706 \n\ 
    707     /* Function */\n\ 
    708     \"prop_function\" : \"THIS_IS_FUNCTION\", \n\ 
     740    /* Array */\n\ 
     741    \"prop_array\" : [\n\ 
     742        /* String */\n\ 
     743        \"テスト\", \n\ 
     744\n\ 
     745        /* Number */\n\ 
     746        -12345\n\ 
     747    ], \n\ 
     748\n\ 
     749    /* String */\n\ 
     750    \"prop_string\" : \"文字列\", \n\ 
    709751\n\ 
    710752    /* Object */\n\ 
     
    717759    }, \n\ 
    718760\n\ 
    719     /* Array */\n\ 
    720     \"prop_array\" : [\n\ 
    721         /* String */\n\ 
    722         \"テスト\", \n\ 
    723 \n\ 
    724         /* Number */\n\ 
    725         -12345\n\ 
    726     ]\n\ 
     761    /* Function */\n\ 
     762    \"prop_function\" : \"THIS_IS_FUNCTION\", \n\ 
     763\n\ 
     764    /* Undefined */\n\ 
     765    \"prop_undefined\" : undefined\n\ 
    727766}"; 
    728767 
     
    898937        var expected = "{\"prop_java\" : \"Mon May 28 21:11:48 JST 2007\", \"prop_null\" : null, \"prop_undefined\" : undefined, \"prop_string\" : \"文字列\", \"prop_number\" : 1234567890, \"prop_boolean\" : false, \"prop_object\" : {\"inner_obj_java\" : \"Javaインスタンス\", \"inner_obj_string\" : \"テスト\", \"inner_obj_number\" : -12345}, \"prop_array\" : [\"56\", \"テスト\", -12345]}"; 
    899938 
    900         JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     939//      JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     940 
     941        // JavaScriptでは、プロパティの定義順番までは考慮されていません。 
     942        eval("var expectedObj = " + expected); 
     943        eval("var actualObj   = " + ImJson.toJSONString(input)); 
     944         
     945        JsUnit.assertEquals("prop_java", expectedObj.prop_java , actualObj.prop_java ); 
     946        JsUnit.assertEquals("prop_null", expectedObj.prop_null , actualObj.prop_null ); 
     947        JsUnit.assertEquals("prop_undefined", expectedObj.prop_undefined , actualObj.prop_undefined ); 
     948        JsUnit.assertEquals("prop_string", expectedObj.prop_string , actualObj.prop_string ); 
     949        JsUnit.assertEquals("prop_number", expectedObj.prop_number , actualObj.prop_number ); 
     950        JsUnit.assertEquals("prop_boolean", expectedObj.prop_boolean , actualObj.prop_boolean ); 
     951        JsUnit.assertEquals("prop_function", undefined , actualObj.prop_function ); 
     952 
     953        JsUnit.assertEquals("prop_object.inner_obj_java", expectedObj.prop_object.inner_obj_java , actualObj.prop_object.inner_obj_java ); 
     954        JsUnit.assertEquals("prop_object.inner_obj_string", expectedObj.prop_object.inner_obj_string , actualObj.prop_object.inner_obj_string ); 
     955        JsUnit.assertEquals("prop_object.inner_obj_number", expectedObj.prop_object.inner_obj_number , actualObj.prop_object.inner_obj_number ); 
     956 
     957        JsUnit.assertEquals("prop_array", 3 , actualObj.prop_array.length ); 
     958        JsUnit.assertEquals("prop_array[0]", expectedObj.prop_array[0] , actualObj.prop_array[0] ); 
     959        JsUnit.assertEquals("prop_array[1]", expectedObj.prop_array[1] , actualObj.prop_array[1] ); 
     960        JsUnit.assertEquals("prop_array[2]", expectedObj.prop_array[2] , actualObj.prop_array[2] ); 
    901961} 
    902962 
     
    9701030"/* Object */\n\ 
    9711031{\n\ 
    972     /* Java */\n\ 
    973     \"prop_java\" : \"Mon May 28 21:11:48 JST 2007\", \n\ 
     1032    /* Array */\n\ 
     1033    \"prop_array\" : [\n\ 
     1034        /* Java */\n\ 
     1035        \"56\", \n\ 
     1036\n\ 
     1037        /* String */\n\ 
     1038        \"テスト\", \n\ 
     1039\n\ 
     1040        /* Number */\n\ 
     1041        -12345\n\ 
     1042    ], \n\ 
    9741043\n\ 
    9751044    /* Null */\n\ 
    9761045    \"prop_null\" : null, \n\ 
    9771046\n\ 
    978     /* Undefined */\n\ 
    979     \"prop_undefined\" : undefined, \n\ 
    980 \n\ 
    9811047    /* String */\n\ 
    9821048    \"prop_string\" : \"文字列\", \n\ 
    983 \n\ 
    984     /* Number */\n\ 
    985     \"prop_number\" : 1234567890, \n\ 
    986 \n\ 
    987     /* Boolean */\n\ 
    988     \"prop_boolean\" : false, \n\ 
    989 \n\ 
    990     /* Function */\n\ 
    991     \"prop_function\" : \"THIS_IS_FUNCTION\", \n\ 
    9921049\n\ 
    9931050    /* Object */\n\ 
     
    10031060    }, \n\ 
    10041061\n\ 
    1005     /* Array */\n\ 
    1006     \"prop_array\" : [\n\ 
    1007         /* Java */\n\ 
    1008         \"56\", \n\ 
    1009 \n\ 
    1010         /* String */\n\ 
    1011         \"テスト\", \n\ 
    1012 \n\ 
    1013         /* Number */\n\ 
    1014         -12345\n\ 
    1015     ]\n\ 
     1062    /* Number */\n\ 
     1063    \"prop_number\" : 1234567890, \n\ 
     1064\n\ 
     1065    /* Java */\n\ 
     1066    \"prop_java\" : \"Mon May 28 21:11:48 JST 2007\", \n\ 
     1067\n\ 
     1068    /* Undefined */\n\ 
     1069    \"prop_undefined\" : undefined, \n\ 
     1070\n\ 
     1071    /* Boolean */\n\ 
     1072    \"prop_boolean\" : false, \n\ 
     1073\n\ 
     1074    /* Function */\n\ 
     1075    \"prop_function\" : \"THIS_IS_FUNCTION\"\n\ 
    10161076}"; 
    10171077 
     
    12411301 
    12421302        var expected = "{\"\\n\" : \"0\", \"\\f\" : \"1\", \"\\b\" : \"2\", \"\\r\" : \"3\", \"\\t\" : \"4\", \"'\" : \"5\", \"\\\"\" : \"6\", \"\\\\\" : \"7\", \"A\" : \"8\", \"B\" : \"9\", \"あ\" : \"10\"}"; 
    1243  
    1244         JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     1303//      JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input)); 
     1304         
     1305        // JavaScriptでは、プロパティの定義順番までは考慮されていません。 
     1306        eval("var expectedObj = " + expected); 
     1307        eval("var actualObj   = " + ImJson.toJSONString(input)); 
     1308         
     1309        JsUnit.assertEquals('["\n"]    ', expectedObj["\n"]     , actualObj["\n"]     ); 
     1310        JsUnit.assertEquals('["\f"]    ', expectedObj["\f"]     , actualObj["\f"]     ); 
     1311        JsUnit.assertEquals('["\b"]    ', expectedObj["\b"]     , actualObj["\b"]     ); 
     1312        JsUnit.assertEquals('["\r"]    ', expectedObj["\r"]     , actualObj["\r"]     ); 
     1313        JsUnit.assertEquals('["\t"]    ', expectedObj["\t"]     , actualObj["\t"]     ); 
     1314        JsUnit.assertEquals('["\'"]    ', expectedObj["\'"]     , actualObj["\'"]     ); 
     1315        JsUnit.assertEquals('["\""]    ', expectedObj["\""]     , actualObj["\""]     ); 
     1316        JsUnit.assertEquals('["\\"]    ', expectedObj["\\"]     , actualObj["\\"]     ); 
     1317        JsUnit.assertEquals('["\101"]  ', expectedObj["\101"]   , actualObj["\101"]   ); 
     1318        JsUnit.assertEquals('["\x42"]  ', expectedObj["\x42"]   , actualObj["\x42"]   ); 
     1319        JsUnit.assertEquals('["\u3042"]', expectedObj["\u3042"] , actualObj["\u3042"] ); 
     1320         
    12451321} 
    12461322 
     
    12691345{\n\ 
    12701346    /* String */\n\ 
     1347    \"\\\\\" : \"7\", \n\ 
     1348\n\ 
     1349    /* String */\n\ 
     1350    \"あ\" : \"10\", \n\ 
     1351\n\ 
     1352    /* String */\n\ 
     1353    \"\\b\" : \"2\", \n\ 
     1354\n\ 
     1355    /* String */\n\ 
     1356    \"\\t\" : \"4\", \n\ 
     1357\n\ 
     1358    /* String */\n\ 
    12711359    \"\\n\" : \"0\", \n\ 
    12721360\n\ 
    12731361    /* String */\n\ 
     1362    \"\\\"\" : \"6\", \n\ 
     1363\n\ 
     1364    /* String */\n\ 
    12741365    \"\\f\" : \"1\", \n\ 
    12751366\n\ 
    12761367    /* String */\n\ 
    1277     \"\\b\" : \"2\", \n\ 
    1278 \n\ 
    1279     /* String */\n\ 
    12801368    \"\\r\" : \"3\", \n\ 
    12811369\n\ 
    12821370    /* String */\n\ 
    1283     \"\\t\" : \"4\", \n\ 
    1284 \n\ 
    1285     /* String */\n\ 
    12861371    \"'\" : \"5\", \n\ 
    12871372\n\ 
    12881373    /* String */\n\ 
    1289     \"\\\"\" : \"6\", \n\ 
    1290 \n\ 
    1291     /* String */\n\ 
    1292     \"\\\\\" : \"7\", \n\ 
    1293 \n\ 
    1294     /* String */\n\ 
    12951374    \"A\" : \"8\", \n\ 
    12961375\n\ 
    12971376    /* String */\n\ 
    1298     \"B\" : \"9\", \n\ 
    1299 \n\ 
    1300     /* String */\n\ 
    1301     \"あ\" : \"10\"\n\ 
     1377    \"B\" : \"9\"\n\ 
    13021378}"; 
    13031379 
    1304         JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input, true)); 
    1305 
     1380        Debug.console("testToJSONString046_DebugConsole用_プロパティがエスケープ文字の場合", ImJson.toJSONString(input, true)); 
     1381        JsUnit.assertEquals("NG", expected, ImJson.toJSONString(input, true)); 
     1382