Changeset 56320 in webkit for trunk/JavaScriptCore/qt/tests
- Timestamp:
- Mar 21, 2010, 3:30:22 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/qt/tests/qscriptengine/tst_qscriptengine.cpp
r54580 r56320 19 19 20 20 #include "qscriptengine.h" 21 #include "qscriptprogram.h" 21 22 #include "qscriptvalue.h" 22 23 #include <QtTest/qtest.h> … … 38 39 void nullValue(); 39 40 void undefinedValue(); 41 void evaluateProgram(); 40 42 }; 41 43 … … 74 76 } 75 77 78 void tst_QScriptEngine::evaluateProgram() 79 { 80 QScriptEngine eng; 81 { 82 QString code("1 + 2"); 83 QString fileName("hello.js"); 84 int lineNumber = 123; 85 QScriptProgram program(code, fileName, lineNumber); 86 QVERIFY(!program.isNull()); 87 QCOMPARE(program.sourceCode(), code); 88 QCOMPARE(program.fileName(), fileName); 89 QCOMPARE(program.firstLineNumber(), lineNumber); 90 91 QScriptValue expected = eng.evaluate(code); 92 for (int x = 0; x < 10; ++x) { 93 QScriptValue ret = eng.evaluate(program); 94 QVERIFY(ret.equals(expected)); 95 } 96 97 // operator= 98 QScriptProgram sameProgram = program; 99 QVERIFY(sameProgram == program); 100 QVERIFY(eng.evaluate(sameProgram).equals(expected)); 101 102 // copy constructor 103 QScriptProgram sameProgram2(program); 104 QVERIFY(sameProgram2 == program); 105 QVERIFY(eng.evaluate(sameProgram2).equals(expected)); 106 107 QScriptProgram differentProgram("2 + 3"); 108 QVERIFY(differentProgram != program); 109 QVERIFY(!eng.evaluate(differentProgram).equals(expected)); 110 } 111 112 // Program that accesses variable in the scope 113 { 114 QScriptProgram program("a"); 115 QVERIFY(!program.isNull()); 116 { 117 QScriptValue ret = eng.evaluate(program); 118 QVERIFY(ret.isError()); 119 QCOMPARE(ret.toString(), QString::fromLatin1("ReferenceError: Can't find variable: a")); 120 } 121 { 122 QScriptValue ret = eng.evaluate(program); 123 QVERIFY(ret.isError()); 124 } 125 eng.evaluate("a = 456"); 126 { 127 QScriptValue ret = eng.evaluate(program); 128 QVERIFY(!ret.isError()); 129 QCOMPARE(ret.toNumber(), 456.0); 130 } 131 } 132 133 // Program that creates closure 134 { 135 QScriptProgram program("(function() { var count = 0; return function() { return count++; }; })"); 136 QVERIFY(!program.isNull()); 137 QScriptValue createCounter = eng.evaluate(program); 138 QVERIFY(createCounter.isFunction()); 139 QScriptValue counter = createCounter.call(); 140 QVERIFY(counter.isFunction()); 141 { 142 QScriptValue ret = counter.call(); 143 QVERIFY(ret.isNumber()); 144 } 145 QScriptValue counter2 = createCounter.call(); 146 QVERIFY(counter2.isFunction()); 147 QVERIFY(!counter2.equals(counter)); 148 { 149 QScriptValue ret = counter2.call(); 150 QVERIFY(ret.isNumber()); 151 } 152 } 153 154 // Same program run in different engines 155 { 156 QString code("1 + 2"); 157 QScriptProgram program(code); 158 QVERIFY(!program.isNull()); 159 double expected = eng.evaluate(program).toNumber(); 160 for (int x = 0; x < 2; ++x) { 161 QScriptEngine eng2; 162 for (int y = 0; y < 2; ++y) { 163 double ret = eng2.evaluate(program).toNumber(); 164 QCOMPARE(ret, expected); 165 } 166 } 167 } 168 169 // No program 170 { 171 QScriptProgram program; 172 QVERIFY(program.isNull()); 173 QScriptValue ret = eng.evaluate(program); 174 QVERIFY(!ret.isValid()); 175 } 176 } 177 76 178 QTEST_MAIN(tst_QScriptEngine) 77 179 #include "tst_qscriptengine.moc"
Note:
See TracChangeset
for help on using the changeset viewer.