Changeset 54773 in webkit
- Timestamp:
- Feb 15, 2010 4:08:42 AM (14 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r54765 r54773 1 2010-02-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> 2 3 Reviewed by Simon Hausmann. 4 5 Fix QScriptValue::toIntXX methods. 6 7 More ECMA Script compliance. 8 9 [Qt] QScriptValue::toIntXX returns incorrect values 10 https://bugs.webkit.org/show_bug.cgi?id=34847 11 12 * qt/api/qscriptvalue_p.h: 13 (QScriptValuePrivate::toInteger): 14 (QScriptValuePrivate::toInt32): 15 (QScriptValuePrivate::toUInt32): 16 (QScriptValuePrivate::toUInt16): 17 * qt/tests/qscriptvalue/tst_qscriptvalue.h: 18 * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: 19 (tst_QScriptValue::toInteger_initData): 20 (tst_QScriptValue::toInteger_makeData): 21 (tst_QScriptValue::toInteger_test): 22 (tst_QScriptValue::toInt32_initData): 23 (tst_QScriptValue::toInt32_makeData): 24 (tst_QScriptValue::toInt32_test): 25 (tst_QScriptValue::toUInt32_initData): 26 (tst_QScriptValue::toUInt32_makeData): 27 (tst_QScriptValue::toUInt32_test): 28 (tst_QScriptValue::toUInt16_initData): 29 (tst_QScriptValue::toUInt16_makeData): 30 (tst_QScriptValue::toUInt16_test): 31 1 32 2010-02-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> 2 33 -
trunk/JavaScriptCore/qt/api/qscriptvalue_p.h
r54605 r54773 526 526 qsreal QScriptValuePrivate::toInteger() const 527 527 { 528 // TODO it is not true implementation! 529 return toNumber(); 528 qsreal result = toNumber(); 529 if (qIsNaN(result)) 530 return 0; 531 if (qIsInf(result)) 532 return result; 533 return (result > 0) ? qFloor(result) : -1 * qFloor(-result); 530 534 } 531 535 532 536 qint32 QScriptValuePrivate::toInt32() const 533 537 { 534 // TODO it is not true implementation! 535 return toNumber(); 538 qsreal result = toInteger(); 539 // Orginaly it should look like that (result == 0 || qIsInf(result) || qIsNaN(result)), but 540 // some of these operation are invoked in toInteger subcall. 541 if (qIsInf(result)) 542 return 0; 543 return result; 536 544 } 537 545 538 546 quint32 QScriptValuePrivate::toUInt32() const 539 547 { 540 // TODO it is not true implementation! 541 return toNumber(); 548 qsreal result = toInteger(); 549 // Orginaly it should look like that (result == 0 || qIsInf(result) || qIsNaN(result)), but 550 // some of these operation are invoked in toInteger subcall. 551 if (qIsInf(result)) 552 return 0; 553 return result; 542 554 } 543 555 544 556 quint16 QScriptValuePrivate::toUInt16() const 545 557 { 546 // TODO it is not true implementation! 547 return toNumber(); 558 return toInt32(); 548 559 } 549 560 -
trunk/JavaScriptCore/qt/tests/qscriptvalue/tst_qscriptvalue.h
r54605 r54773 86 86 void toBoolean(); 87 87 88 void toInteger_data(); 89 void toInteger(); 90 91 void toInt32_data(); 92 void toInt32(); 93 94 void toUInt32_data(); 95 void toUInt32(); 96 97 void toUInt16_data(); 98 void toUInt16(); 99 88 100 private: 89 101 typedef void (tst_QScriptValue::*InitDataFunction)(); … … 147 159 void toBoolean_test(const char*, const QScriptValue&); 148 160 161 void toInteger_initData(); 162 void toInteger_makeData(const char*); 163 void toInteger_test(const char*, const QScriptValue&); 164 165 void toInt32_initData(); 166 void toInt32_makeData(const char*); 167 void toInt32_test(const char*, const QScriptValue&); 168 169 void toUInt32_initData(); 170 void toUInt32_makeData(const char*); 171 void toUInt32_test(const char*, const QScriptValue&); 172 173 void toUInt16_initData(); 174 void toUInt16_makeData(const char*); 175 void toUInt16_test(const char*, const QScriptValue&); 176 149 177 private: 150 178 QScriptEngine* engine; -
trunk/JavaScriptCore/qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp
r54605 r54773 941 941 942 942 DEFINE_TEST_FUNCTION(toBoolean) 943 944 945 void tst_QScriptValue::toInteger_initData() 946 { 947 QTest::addColumn<qsreal>("expected"); 948 initScriptValues(); 949 } 950 951 void tst_QScriptValue::toInteger_makeData(const char* expr) 952 { 953 static QHash<QString, qsreal> toInteger; 954 if (toInteger.isEmpty()) { 955 toInteger.insert("QScriptValue()", 0); 956 toInteger.insert("QScriptValue(QScriptValue::UndefinedValue)", 0); 957 toInteger.insert("QScriptValue(QScriptValue::NullValue)", 0); 958 toInteger.insert("QScriptValue(true)", 1); 959 toInteger.insert("QScriptValue(false)", 0); 960 toInteger.insert("QScriptValue(int(122))", 122); 961 toInteger.insert("QScriptValue(uint(124))", 124); 962 toInteger.insert("QScriptValue(0)", 0); 963 toInteger.insert("QScriptValue(0.0)", 0); 964 toInteger.insert("QScriptValue(123.0)", 123); 965 toInteger.insert("QScriptValue(6.37e-8)", 0); 966 toInteger.insert("QScriptValue(-6.37e-8)", 0); 967 toInteger.insert("QScriptValue(0x43211234)", 1126240820); 968 toInteger.insert("QScriptValue(0x10000)", 65536); 969 toInteger.insert("QScriptValue(0x10001)", 65537); 970 toInteger.insert("QScriptValue(qSNaN())", 0); 971 toInteger.insert("QScriptValue(qQNaN())", 0); 972 toInteger.insert("QScriptValue(qInf())", qInf()); 973 toInteger.insert("QScriptValue(-qInf())", qInf()); 974 toInteger.insert("QScriptValue(\"NaN\")", 0); 975 toInteger.insert("QScriptValue(\"Infinity\")", qInf()); 976 toInteger.insert("QScriptValue(\"-Infinity\")", qInf()); 977 toInteger.insert("QScriptValue(\"ciao\")", 0); 978 toInteger.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0); 979 toInteger.insert("QScriptValue(QString(\"\"))", 0); 980 toInteger.insert("QScriptValue(QString())", 0); 981 toInteger.insert("QScriptValue(QString(\"0\"))", 0); 982 toInteger.insert("QScriptValue(QString(\"123\"))", 123); 983 toInteger.insert("QScriptValue(QString(\"12.4\"))", 12); 984 toInteger.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0); 985 toInteger.insert("QScriptValue(0, QScriptValue::NullValue)", 0); 986 toInteger.insert("QScriptValue(0, true)", 1); 987 toInteger.insert("QScriptValue(0, false)", 0); 988 toInteger.insert("QScriptValue(0, int(122))", 122); 989 toInteger.insert("QScriptValue(0, uint(124))", 124); 990 toInteger.insert("QScriptValue(0, 0)", 0); 991 toInteger.insert("QScriptValue(0, 0.0)", 0); 992 toInteger.insert("QScriptValue(0, 123.0)", 123); 993 toInteger.insert("QScriptValue(0, 6.37e-8)", 0); 994 toInteger.insert("QScriptValue(0, -6.37e-8)", 0); 995 toInteger.insert("QScriptValue(0, 0x43211234)", 1126240820); 996 toInteger.insert("QScriptValue(0, 0x10000)", 65536); 997 toInteger.insert("QScriptValue(0, 0x10001)", 65537); 998 toInteger.insert("QScriptValue(0, qSNaN())", 0); 999 toInteger.insert("QScriptValue(0, qQNaN())", 0); 1000 toInteger.insert("QScriptValue(0, qInf())", qInf()); 1001 toInteger.insert("QScriptValue(0, -qInf())", qInf()); 1002 toInteger.insert("QScriptValue(0, \"NaN\")", 0); 1003 toInteger.insert("QScriptValue(0, \"Infinity\")", qInf()); 1004 toInteger.insert("QScriptValue(0, \"-Infinity\")", qInf()); 1005 toInteger.insert("QScriptValue(0, \"ciao\")", 0); 1006 toInteger.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0); 1007 toInteger.insert("QScriptValue(0, QString(\"\"))", 0); 1008 toInteger.insert("QScriptValue(0, QString())", 0); 1009 toInteger.insert("QScriptValue(0, QString(\"0\"))", 0); 1010 toInteger.insert("QScriptValue(0, QString(\"123\"))", 123); 1011 toInteger.insert("QScriptValue(0, QString(\"12.3\"))", 12); 1012 toInteger.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0); 1013 toInteger.insert("QScriptValue(engine, QScriptValue::NullValue)", 0); 1014 toInteger.insert("QScriptValue(engine, true)", 1); 1015 toInteger.insert("QScriptValue(engine, false)", 0); 1016 toInteger.insert("QScriptValue(engine, int(122))", 122); 1017 toInteger.insert("QScriptValue(engine, uint(124))", 124); 1018 toInteger.insert("QScriptValue(engine, 0)", 0); 1019 toInteger.insert("QScriptValue(engine, 0.0)", 0); 1020 toInteger.insert("QScriptValue(engine, 123.0)", 123); 1021 toInteger.insert("QScriptValue(engine, 6.37e-8)", 0); 1022 toInteger.insert("QScriptValue(engine, -6.37e-8)", 0); 1023 toInteger.insert("QScriptValue(engine, 0x43211234)", 1126240820); 1024 toInteger.insert("QScriptValue(engine, 0x10000)", 65536); 1025 toInteger.insert("QScriptValue(engine, 0x10001)", 65537); 1026 toInteger.insert("QScriptValue(engine, qSNaN())", 0); 1027 toInteger.insert("QScriptValue(engine, qQNaN())", 0); 1028 toInteger.insert("QScriptValue(engine, qInf())", qInf()); 1029 toInteger.insert("QScriptValue(engine, -qInf())", qInf()); 1030 toInteger.insert("QScriptValue(engine, \"NaN\")", 0); 1031 toInteger.insert("QScriptValue(engine, \"Infinity\")", qInf()); 1032 toInteger.insert("QScriptValue(engine, \"-Infinity\")", qInf()); 1033 toInteger.insert("QScriptValue(engine, \"ciao\")", 0); 1034 toInteger.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0); 1035 toInteger.insert("QScriptValue(engine, QString(\"\"))", 0); 1036 toInteger.insert("QScriptValue(engine, QString())", 0); 1037 toInteger.insert("QScriptValue(engine, QString(\"0\"))", 0); 1038 toInteger.insert("QScriptValue(engine, QString(\"123\"))", 123); 1039 toInteger.insert("QScriptValue(engine, QString(\"1.23\"))", 1); 1040 toInteger.insert("engine->evaluate(\"[]\")", 0); 1041 toInteger.insert("engine->evaluate(\"{}\")", 0); 1042 toInteger.insert("engine->evaluate(\"Object.prototype\")", 0); 1043 toInteger.insert("engine->evaluate(\"Date.prototype\")", 0); 1044 toInteger.insert("engine->evaluate(\"Array.prototype\")", 0); 1045 toInteger.insert("engine->evaluate(\"Function.prototype\")", 0); 1046 toInteger.insert("engine->evaluate(\"Error.prototype\")", 0); 1047 toInteger.insert("engine->evaluate(\"Object\")", 0); 1048 toInteger.insert("engine->evaluate(\"Array\")", 0); 1049 toInteger.insert("engine->evaluate(\"Number\")", 0); 1050 toInteger.insert("engine->evaluate(\"Function\")", 0); 1051 toInteger.insert("engine->evaluate(\"(function() { return 1; })\")", 0); 1052 toInteger.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0); 1053 toInteger.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0); 1054 toInteger.insert("engine->evaluate(\"/foo/\")", 0); 1055 toInteger.insert("engine->evaluate(\"new Object()\")", 0); 1056 toInteger.insert("engine->evaluate(\"new Array()\")", 0); 1057 toInteger.insert("engine->evaluate(\"new Error()\")", 0); 1058 } 1059 newRow(expr) << toInteger.value(expr); 1060 } 1061 1062 void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value) 1063 { 1064 QFETCH(qsreal, expected); 1065 if (qIsInf(expected)) { 1066 QVERIFY(qIsInf(value.toInteger())); 1067 return; 1068 } 1069 QCOMPARE(value.toInteger(), expected); 1070 } 1071 1072 DEFINE_TEST_FUNCTION(toInteger) 1073 1074 1075 void tst_QScriptValue::toInt32_initData() 1076 { 1077 QTest::addColumn<qint32>("expected"); 1078 initScriptValues(); 1079 } 1080 1081 void tst_QScriptValue::toInt32_makeData(const char* expr) 1082 { 1083 static QHash<QString, qint32> toInt32; 1084 if (toInt32.isEmpty()) { 1085 toInt32.insert("QScriptValue()", 0); 1086 toInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0); 1087 toInt32.insert("QScriptValue(QScriptValue::NullValue)", 0); 1088 toInt32.insert("QScriptValue(true)", 1); 1089 toInt32.insert("QScriptValue(false)", 0); 1090 toInt32.insert("QScriptValue(int(122))", 122); 1091 toInt32.insert("QScriptValue(uint(124))", 124); 1092 toInt32.insert("QScriptValue(0)", 0); 1093 toInt32.insert("QScriptValue(0.0)", 0); 1094 toInt32.insert("QScriptValue(123.0)", 123); 1095 toInt32.insert("QScriptValue(6.37e-8)", 0); 1096 toInt32.insert("QScriptValue(-6.37e-8)", 0); 1097 toInt32.insert("QScriptValue(0x43211234)", 1126240820); 1098 toInt32.insert("QScriptValue(0x10000)", 65536); 1099 toInt32.insert("QScriptValue(0x10001)", 65537); 1100 toInt32.insert("QScriptValue(qSNaN())", 0); 1101 toInt32.insert("QScriptValue(qQNaN())", 0); 1102 toInt32.insert("QScriptValue(qInf())", 0); 1103 toInt32.insert("QScriptValue(-qInf())", 0); 1104 toInt32.insert("QScriptValue(\"NaN\")", 0); 1105 toInt32.insert("QScriptValue(\"Infinity\")", 0); 1106 toInt32.insert("QScriptValue(\"-Infinity\")", 0); 1107 toInt32.insert("QScriptValue(\"ciao\")", 0); 1108 toInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0); 1109 toInt32.insert("QScriptValue(QString(\"\"))", 0); 1110 toInt32.insert("QScriptValue(QString())", 0); 1111 toInt32.insert("QScriptValue(QString(\"0\"))", 0); 1112 toInt32.insert("QScriptValue(QString(\"123\"))", 123); 1113 toInt32.insert("QScriptValue(QString(\"12.4\"))", 12); 1114 toInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0); 1115 toInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0); 1116 toInt32.insert("QScriptValue(0, true)", 1); 1117 toInt32.insert("QScriptValue(0, false)", 0); 1118 toInt32.insert("QScriptValue(0, int(122))", 122); 1119 toInt32.insert("QScriptValue(0, uint(124))", 124); 1120 toInt32.insert("QScriptValue(0, 0)", 0); 1121 toInt32.insert("QScriptValue(0, 0.0)", 0); 1122 toInt32.insert("QScriptValue(0, 123.0)", 123); 1123 toInt32.insert("QScriptValue(0, 6.37e-8)", 0); 1124 toInt32.insert("QScriptValue(0, -6.37e-8)", 0); 1125 toInt32.insert("QScriptValue(0, 0x43211234)", 1126240820); 1126 toInt32.insert("QScriptValue(0, 0x10000)", 65536); 1127 toInt32.insert("QScriptValue(0, 0x10001)", 65537); 1128 toInt32.insert("QScriptValue(0, qSNaN())", 0); 1129 toInt32.insert("QScriptValue(0, qQNaN())", 0); 1130 toInt32.insert("QScriptValue(0, qInf())", 0); 1131 toInt32.insert("QScriptValue(0, -qInf())", 0); 1132 toInt32.insert("QScriptValue(0, \"NaN\")", 0); 1133 toInt32.insert("QScriptValue(0, \"Infinity\")", 0); 1134 toInt32.insert("QScriptValue(0, \"-Infinity\")", 0); 1135 toInt32.insert("QScriptValue(0, \"ciao\")", 0); 1136 toInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0); 1137 toInt32.insert("QScriptValue(0, QString(\"\"))", 0); 1138 toInt32.insert("QScriptValue(0, QString())", 0); 1139 toInt32.insert("QScriptValue(0, QString(\"0\"))", 0); 1140 toInt32.insert("QScriptValue(0, QString(\"123\"))", 123); 1141 toInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12); 1142 toInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0); 1143 toInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0); 1144 toInt32.insert("QScriptValue(engine, true)", 1); 1145 toInt32.insert("QScriptValue(engine, false)", 0); 1146 toInt32.insert("QScriptValue(engine, int(122))", 122); 1147 toInt32.insert("QScriptValue(engine, uint(124))", 124); 1148 toInt32.insert("QScriptValue(engine, 0)", 0); 1149 toInt32.insert("QScriptValue(engine, 0.0)", 0); 1150 toInt32.insert("QScriptValue(engine, 123.0)", 123); 1151 toInt32.insert("QScriptValue(engine, 6.37e-8)", 0); 1152 toInt32.insert("QScriptValue(engine, -6.37e-8)", 0); 1153 toInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820); 1154 toInt32.insert("QScriptValue(engine, 0x10000)", 65536); 1155 toInt32.insert("QScriptValue(engine, 0x10001)", 65537); 1156 toInt32.insert("QScriptValue(engine, qSNaN())", 0); 1157 toInt32.insert("QScriptValue(engine, qQNaN())", 0); 1158 toInt32.insert("QScriptValue(engine, qInf())", 0); 1159 toInt32.insert("QScriptValue(engine, -qInf())", 0); 1160 toInt32.insert("QScriptValue(engine, \"NaN\")", 0); 1161 toInt32.insert("QScriptValue(engine, \"Infinity\")", 0); 1162 toInt32.insert("QScriptValue(engine, \"-Infinity\")", 0); 1163 toInt32.insert("QScriptValue(engine, \"ciao\")", 0); 1164 toInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0); 1165 toInt32.insert("QScriptValue(engine, QString(\"\"))", 0); 1166 toInt32.insert("QScriptValue(engine, QString())", 0); 1167 toInt32.insert("QScriptValue(engine, QString(\"0\"))", 0); 1168 toInt32.insert("QScriptValue(engine, QString(\"123\"))", 123); 1169 toInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1); 1170 toInt32.insert("engine->evaluate(\"[]\")", 0); 1171 toInt32.insert("engine->evaluate(\"{}\")", 0); 1172 toInt32.insert("engine->evaluate(\"Object.prototype\")", 0); 1173 toInt32.insert("engine->evaluate(\"Date.prototype\")", 0); 1174 toInt32.insert("engine->evaluate(\"Array.prototype\")", 0); 1175 toInt32.insert("engine->evaluate(\"Function.prototype\")", 0); 1176 toInt32.insert("engine->evaluate(\"Error.prototype\")", 0); 1177 toInt32.insert("engine->evaluate(\"Object\")", 0); 1178 toInt32.insert("engine->evaluate(\"Array\")", 0); 1179 toInt32.insert("engine->evaluate(\"Number\")", 0); 1180 toInt32.insert("engine->evaluate(\"Function\")", 0); 1181 toInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0); 1182 toInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0); 1183 toInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0); 1184 toInt32.insert("engine->evaluate(\"/foo/\")", 0); 1185 toInt32.insert("engine->evaluate(\"new Object()\")", 0); 1186 toInt32.insert("engine->evaluate(\"new Array()\")", 0); 1187 toInt32.insert("engine->evaluate(\"new Error()\")", 0); 1188 } 1189 newRow(expr) << toInt32.value(expr); 1190 } 1191 1192 void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value) 1193 { 1194 QFETCH(qint32, expected); 1195 QCOMPARE(value.toInt32(), expected); 1196 } 1197 1198 DEFINE_TEST_FUNCTION(toInt32) 1199 1200 1201 void tst_QScriptValue::toUInt32_initData() 1202 { 1203 QTest::addColumn<quint32>("expected"); 1204 initScriptValues(); 1205 } 1206 1207 void tst_QScriptValue::toUInt32_makeData(const char* expr) 1208 { 1209 static QHash<QString, quint32> toUInt32; 1210 if (toUInt32.isEmpty()) { 1211 toUInt32.insert("QScriptValue()", 0); 1212 toUInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0); 1213 toUInt32.insert("QScriptValue(QScriptValue::NullValue)", 0); 1214 toUInt32.insert("QScriptValue(true)", 1); 1215 toUInt32.insert("QScriptValue(false)", 0); 1216 toUInt32.insert("QScriptValue(int(122))", 122); 1217 toUInt32.insert("QScriptValue(uint(124))", 124); 1218 toUInt32.insert("QScriptValue(0)", 0); 1219 toUInt32.insert("QScriptValue(0.0)", 0); 1220 toUInt32.insert("QScriptValue(123.0)", 123); 1221 toUInt32.insert("QScriptValue(6.37e-8)", 0); 1222 toUInt32.insert("QScriptValue(-6.37e-8)", 0); 1223 toUInt32.insert("QScriptValue(0x43211234)", 1126240820); 1224 toUInt32.insert("QScriptValue(0x10000)", 65536); 1225 toUInt32.insert("QScriptValue(0x10001)", 65537); 1226 toUInt32.insert("QScriptValue(qSNaN())", 0); 1227 toUInt32.insert("QScriptValue(qQNaN())", 0); 1228 toUInt32.insert("QScriptValue(qInf())", 0); 1229 toUInt32.insert("QScriptValue(-qInf())", 0); 1230 toUInt32.insert("QScriptValue(\"NaN\")", 0); 1231 toUInt32.insert("QScriptValue(\"Infinity\")", 0); 1232 toUInt32.insert("QScriptValue(\"-Infinity\")", 0); 1233 toUInt32.insert("QScriptValue(\"ciao\")", 0); 1234 toUInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0); 1235 toUInt32.insert("QScriptValue(QString(\"\"))", 0); 1236 toUInt32.insert("QScriptValue(QString())", 0); 1237 toUInt32.insert("QScriptValue(QString(\"0\"))", 0); 1238 toUInt32.insert("QScriptValue(QString(\"123\"))", 123); 1239 toUInt32.insert("QScriptValue(QString(\"12.4\"))", 12); 1240 toUInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0); 1241 toUInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0); 1242 toUInt32.insert("QScriptValue(0, true)", 1); 1243 toUInt32.insert("QScriptValue(0, false)", 0); 1244 toUInt32.insert("QScriptValue(0, int(122))", 122); 1245 toUInt32.insert("QScriptValue(0, uint(124))", 124); 1246 toUInt32.insert("QScriptValue(0, 0)", 0); 1247 toUInt32.insert("QScriptValue(0, 0.0)", 0); 1248 toUInt32.insert("QScriptValue(0, 123.0)", 123); 1249 toUInt32.insert("QScriptValue(0, 6.37e-8)", 0); 1250 toUInt32.insert("QScriptValue(0, -6.37e-8)", 0); 1251 toUInt32.insert("QScriptValue(0, 0x43211234)", 1126240820); 1252 toUInt32.insert("QScriptValue(0, 0x10000)", 65536); 1253 toUInt32.insert("QScriptValue(0, 0x10001)", 65537); 1254 toUInt32.insert("QScriptValue(0, qSNaN())", 0); 1255 toUInt32.insert("QScriptValue(0, qQNaN())", 0); 1256 toUInt32.insert("QScriptValue(0, qInf())", 0); 1257 toUInt32.insert("QScriptValue(0, -qInf())", 0); 1258 toUInt32.insert("QScriptValue(0, \"NaN\")", 0); 1259 toUInt32.insert("QScriptValue(0, \"Infinity\")", 0); 1260 toUInt32.insert("QScriptValue(0, \"-Infinity\")", 0); 1261 toUInt32.insert("QScriptValue(0, \"ciao\")", 0); 1262 toUInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0); 1263 toUInt32.insert("QScriptValue(0, QString(\"\"))", 0); 1264 toUInt32.insert("QScriptValue(0, QString())", 0); 1265 toUInt32.insert("QScriptValue(0, QString(\"0\"))", 0); 1266 toUInt32.insert("QScriptValue(0, QString(\"123\"))", 123); 1267 toUInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12); 1268 toUInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0); 1269 toUInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0); 1270 toUInt32.insert("QScriptValue(engine, true)", 1); 1271 toUInt32.insert("QScriptValue(engine, false)", 0); 1272 toUInt32.insert("QScriptValue(engine, int(122))", 122); 1273 toUInt32.insert("QScriptValue(engine, uint(124))", 124); 1274 toUInt32.insert("QScriptValue(engine, 0)", 0); 1275 toUInt32.insert("QScriptValue(engine, 0.0)", 0); 1276 toUInt32.insert("QScriptValue(engine, 123.0)", 123); 1277 toUInt32.insert("QScriptValue(engine, 6.37e-8)", 0); 1278 toUInt32.insert("QScriptValue(engine, -6.37e-8)", 0); 1279 toUInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820); 1280 toUInt32.insert("QScriptValue(engine, 0x10000)", 65536); 1281 toUInt32.insert("QScriptValue(engine, 0x10001)", 65537); 1282 toUInt32.insert("QScriptValue(engine, qSNaN())", 0); 1283 toUInt32.insert("QScriptValue(engine, qQNaN())", 0); 1284 toUInt32.insert("QScriptValue(engine, qInf())", 0); 1285 toUInt32.insert("QScriptValue(engine, -qInf())", 0); 1286 toUInt32.insert("QScriptValue(engine, \"NaN\")", 0); 1287 toUInt32.insert("QScriptValue(engine, \"Infinity\")", 0); 1288 toUInt32.insert("QScriptValue(engine, \"-Infinity\")", 0); 1289 toUInt32.insert("QScriptValue(engine, \"ciao\")", 0); 1290 toUInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0); 1291 toUInt32.insert("QScriptValue(engine, QString(\"\"))", 0); 1292 toUInt32.insert("QScriptValue(engine, QString())", 0); 1293 toUInt32.insert("QScriptValue(engine, QString(\"0\"))", 0); 1294 toUInt32.insert("QScriptValue(engine, QString(\"123\"))", 123); 1295 toUInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1); 1296 toUInt32.insert("engine->evaluate(\"[]\")", 0); 1297 toUInt32.insert("engine->evaluate(\"{}\")", 0); 1298 toUInt32.insert("engine->evaluate(\"Object.prototype\")", 0); 1299 toUInt32.insert("engine->evaluate(\"Date.prototype\")", 0); 1300 toUInt32.insert("engine->evaluate(\"Array.prototype\")", 0); 1301 toUInt32.insert("engine->evaluate(\"Function.prototype\")", 0); 1302 toUInt32.insert("engine->evaluate(\"Error.prototype\")", 0); 1303 toUInt32.insert("engine->evaluate(\"Object\")", 0); 1304 toUInt32.insert("engine->evaluate(\"Array\")", 0); 1305 toUInt32.insert("engine->evaluate(\"Number\")", 0); 1306 toUInt32.insert("engine->evaluate(\"Function\")", 0); 1307 toUInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0); 1308 toUInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0); 1309 toUInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0); 1310 toUInt32.insert("engine->evaluate(\"/foo/\")", 0); 1311 toUInt32.insert("engine->evaluate(\"new Object()\")", 0); 1312 toUInt32.insert("engine->evaluate(\"new Array()\")", 0); 1313 toUInt32.insert("engine->evaluate(\"new Error()\")", 0); 1314 } 1315 newRow(expr) << toUInt32.value(expr); 1316 } 1317 1318 void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value) 1319 { 1320 QFETCH(quint32, expected); 1321 QCOMPARE(value.toUInt32(), expected); 1322 } 1323 1324 DEFINE_TEST_FUNCTION(toUInt32) 1325 1326 1327 void tst_QScriptValue::toUInt16_initData() 1328 { 1329 QTest::addColumn<quint16>("expected"); 1330 initScriptValues(); 1331 } 1332 1333 void tst_QScriptValue::toUInt16_makeData(const char* expr) 1334 { 1335 static QHash<QString, quint16> toUInt16; 1336 if (toUInt16.isEmpty()) { 1337 toUInt16.insert("QScriptValue()", 0); 1338 toUInt16.insert("QScriptValue(QScriptValue::UndefinedValue)", 0); 1339 toUInt16.insert("QScriptValue(QScriptValue::NullValue)", 0); 1340 toUInt16.insert("QScriptValue(true)", 1); 1341 toUInt16.insert("QScriptValue(false)", 0); 1342 toUInt16.insert("QScriptValue(int(122))", 122); 1343 toUInt16.insert("QScriptValue(uint(124))", 124); 1344 toUInt16.insert("QScriptValue(0)", 0); 1345 toUInt16.insert("QScriptValue(0.0)", 0); 1346 toUInt16.insert("QScriptValue(123.0)", 123); 1347 toUInt16.insert("QScriptValue(6.37e-8)", 0); 1348 toUInt16.insert("QScriptValue(-6.37e-8)", 0); 1349 toUInt16.insert("QScriptValue(0x43211234)", 4660); 1350 toUInt16.insert("QScriptValue(0x10000)", 0); 1351 toUInt16.insert("QScriptValue(0x10001)", 1); 1352 toUInt16.insert("QScriptValue(qSNaN())", 0); 1353 toUInt16.insert("QScriptValue(qQNaN())", 0); 1354 toUInt16.insert("QScriptValue(qInf())", 0); 1355 toUInt16.insert("QScriptValue(-qInf())", 0); 1356 toUInt16.insert("QScriptValue(\"NaN\")", 0); 1357 toUInt16.insert("QScriptValue(\"Infinity\")", 0); 1358 toUInt16.insert("QScriptValue(\"-Infinity\")", 0); 1359 toUInt16.insert("QScriptValue(\"ciao\")", 0); 1360 toUInt16.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0); 1361 toUInt16.insert("QScriptValue(QString(\"\"))", 0); 1362 toUInt16.insert("QScriptValue(QString())", 0); 1363 toUInt16.insert("QScriptValue(QString(\"0\"))", 0); 1364 toUInt16.insert("QScriptValue(QString(\"123\"))", 123); 1365 toUInt16.insert("QScriptValue(QString(\"12.4\"))", 12); 1366 toUInt16.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0); 1367 toUInt16.insert("QScriptValue(0, QScriptValue::NullValue)", 0); 1368 toUInt16.insert("QScriptValue(0, true)", 1); 1369 toUInt16.insert("QScriptValue(0, false)", 0); 1370 toUInt16.insert("QScriptValue(0, int(122))", 122); 1371 toUInt16.insert("QScriptValue(0, uint(124))", 124); 1372 toUInt16.insert("QScriptValue(0, 0)", 0); 1373 toUInt16.insert("QScriptValue(0, 0.0)", 0); 1374 toUInt16.insert("QScriptValue(0, 123.0)", 123); 1375 toUInt16.insert("QScriptValue(0, 6.37e-8)", 0); 1376 toUInt16.insert("QScriptValue(0, -6.37e-8)", 0); 1377 toUInt16.insert("QScriptValue(0, 0x43211234)", 4660); 1378 toUInt16.insert("QScriptValue(0, 0x10000)", 0); 1379 toUInt16.insert("QScriptValue(0, 0x10001)", 1); 1380 toUInt16.insert("QScriptValue(0, qSNaN())", 0); 1381 toUInt16.insert("QScriptValue(0, qQNaN())", 0); 1382 toUInt16.insert("QScriptValue(0, qInf())", 0); 1383 toUInt16.insert("QScriptValue(0, -qInf())", 0); 1384 toUInt16.insert("QScriptValue(0, \"NaN\")", 0); 1385 toUInt16.insert("QScriptValue(0, \"Infinity\")", 0); 1386 toUInt16.insert("QScriptValue(0, \"-Infinity\")", 0); 1387 toUInt16.insert("QScriptValue(0, \"ciao\")", 0); 1388 toUInt16.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0); 1389 toUInt16.insert("QScriptValue(0, QString(\"\"))", 0); 1390 toUInt16.insert("QScriptValue(0, QString())", 0); 1391 toUInt16.insert("QScriptValue(0, QString(\"0\"))", 0); 1392 toUInt16.insert("QScriptValue(0, QString(\"123\"))", 123); 1393 toUInt16.insert("QScriptValue(0, QString(\"12.3\"))", 12); 1394 toUInt16.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0); 1395 toUInt16.insert("QScriptValue(engine, QScriptValue::NullValue)", 0); 1396 toUInt16.insert("QScriptValue(engine, true)", 1); 1397 toUInt16.insert("QScriptValue(engine, false)", 0); 1398 toUInt16.insert("QScriptValue(engine, int(122))", 122); 1399 toUInt16.insert("QScriptValue(engine, uint(124))", 124); 1400 toUInt16.insert("QScriptValue(engine, 0)", 0); 1401 toUInt16.insert("QScriptValue(engine, 0.0)", 0); 1402 toUInt16.insert("QScriptValue(engine, 123.0)", 123); 1403 toUInt16.insert("QScriptValue(engine, 6.37e-8)", 0); 1404 toUInt16.insert("QScriptValue(engine, -6.37e-8)", 0); 1405 toUInt16.insert("QScriptValue(engine, 0x43211234)", 4660); 1406 toUInt16.insert("QScriptValue(engine, 0x10000)", 0); 1407 toUInt16.insert("QScriptValue(engine, 0x10001)", 1); 1408 toUInt16.insert("QScriptValue(engine, qSNaN())", 0); 1409 toUInt16.insert("QScriptValue(engine, qQNaN())", 0); 1410 toUInt16.insert("QScriptValue(engine, qInf())", 0); 1411 toUInt16.insert("QScriptValue(engine, -qInf())", 0); 1412 toUInt16.insert("QScriptValue(engine, \"NaN\")", 0); 1413 toUInt16.insert("QScriptValue(engine, \"Infinity\")", 0); 1414 toUInt16.insert("QScriptValue(engine, \"-Infinity\")", 0); 1415 toUInt16.insert("QScriptValue(engine, \"ciao\")", 0); 1416 toUInt16.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0); 1417 toUInt16.insert("QScriptValue(engine, QString(\"\"))", 0); 1418 toUInt16.insert("QScriptValue(engine, QString())", 0); 1419 toUInt16.insert("QScriptValue(engine, QString(\"0\"))", 0); 1420 toUInt16.insert("QScriptValue(engine, QString(\"123\"))", 123); 1421 toUInt16.insert("QScriptValue(engine, QString(\"1.23\"))", 1); 1422 toUInt16.insert("engine->evaluate(\"[]\")", 0); 1423 toUInt16.insert("engine->evaluate(\"{}\")", 0); 1424 toUInt16.insert("engine->evaluate(\"Object.prototype\")", 0); 1425 toUInt16.insert("engine->evaluate(\"Date.prototype\")", 0); 1426 toUInt16.insert("engine->evaluate(\"Array.prototype\")", 0); 1427 toUInt16.insert("engine->evaluate(\"Function.prototype\")", 0); 1428 toUInt16.insert("engine->evaluate(\"Error.prototype\")", 0); 1429 toUInt16.insert("engine->evaluate(\"Object\")", 0); 1430 toUInt16.insert("engine->evaluate(\"Array\")", 0); 1431 toUInt16.insert("engine->evaluate(\"Number\")", 0); 1432 toUInt16.insert("engine->evaluate(\"Function\")", 0); 1433 toUInt16.insert("engine->evaluate(\"(function() { return 1; })\")", 0); 1434 toUInt16.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0); 1435 toUInt16.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0); 1436 toUInt16.insert("engine->evaluate(\"/foo/\")", 0); 1437 toUInt16.insert("engine->evaluate(\"new Object()\")", 0); 1438 toUInt16.insert("engine->evaluate(\"new Array()\")", 0); 1439 toUInt16.insert("engine->evaluate(\"new Error()\")", 0); 1440 } 1441 newRow(expr) << toUInt16.value(expr); 1442 } 1443 1444 void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value) 1445 { 1446 QFETCH(quint16, expected); 1447 QCOMPARE(value.toUInt16(), expected); 1448 } 1449 1450 DEFINE_TEST_FUNCTION(toUInt16)
Note: See TracChangeset
for help on using the changeset viewer.