//sligthly modified from tst_QMap void tst_QHash::iterators() { QHash<int, QString> hash; QMap<int, QString> testMap; QString testString="Teststring %1"; QString testString1; int i; for(i = 1; i < 100; ++i) hash.insert(i, testString.arg(i)); //to get some chaos in the hash hash.squeeze(); //STL-Style iterators QHash<int, QString>::iterator stlIt = hash.begin(); for(stlIt = hash.begin(), i = 1; stlIt != hash.end(), i < 100; ++stlIt, ++i) { testMap.insert(i,stlIt.value()); //QVERIFY(stlIt.value() == hash.value( } stlIt = hash.begin(); QVERIFY(stlIt.value() == testMap.value(1)); stlIt+=5; QVERIFY(stlIt.value() == testMap.value(6)); stlIt++; QVERIFY(stlIt.value() == testMap.value(7)); stlIt-=3; QVERIFY(stlIt.value() == testMap.value(4)); stlIt--; QVERIFY(stlIt.value() == testMap.value(3)); testMap.clear(); //STL-Style const-iterators QHash<int, QString>::const_iterator cstlIt = hash.constBegin(); for(cstlIt = hash.constBegin(), i = 1; cstlIt != hash.constEnd(), i < 100; ++cstlIt, ++i) { testMap.insert(i,cstlIt.value()); //QVERIFY(stlIt.value() == hash.value( } cstlIt = hash.constBegin(); QVERIFY(cstlIt.value() == testMap.value(1)); cstlIt+=5; QVERIFY(cstlIt.value() == testMap.value(6)); cstlIt++; QVERIFY(cstlIt.value() == testMap.value(7)); cstlIt-=3; QVERIFY(cstlIt.value() == testMap.value(4)); cstlIt--; QVERIFY(cstlIt.value() == testMap.value(3)); testMap.clear(); //Java-Style iterators QHashIterator<int, QString> javaIt(hash); //walk through i = 0; while(javaIt.hasNext()) { ++i; javaIt.next(); testMap.insert(i,javaIt.value()); } javaIt.toFront(); i = 0; while(javaIt.hasNext()) { ++i; javaIt.next(); //qDebug(javaIt.value()); QVERIFY(javaIt.value() == testMap.value(i)); } ++i; while(javaIt.hasPrevious()) { --i; javaIt.previous(); QVERIFY(javaIt.value() == testMap.value(i)); } /* I've removed findNextKey() and findPreviousKey() from the API for Qt 4.0 beta 1. */ #if 0 //findPreviousKey() findNextKey() for(i = 1; i < 100; ++i) { if(javaIt.findNextKey(i)) QVERIFY(javaIt.value() == testString.arg(i)); else { QVERIFY(!javaIt.hasNext()); QVERIFY(javaIt.findPreviousKey(i)); QVERIFY(javaIt.value() == testString.arg(i)); } if(javaIt.findPreviousKey(i)) QVERIFY(javaIt.value() == testString.arg(i)); else { QVERIFY(!javaIt.hasPrevious()); QVERIFY(javaIt.findNextKey(i)); QVERIFY(javaIt.value() == testString.arg(i)); } } #endif //peekNext() peekPrevious() javaIt.toFront(); javaIt.next(); while(javaIt.hasNext()) { testString = javaIt.value(); testString1 = javaIt.peekNext().value(); javaIt.next(); //qDebug(testString + " " + testString1 + " " + javaIt.peekPrevious().value()); QVERIFY(javaIt.value() == testString1); QCOMPARE(javaIt.peekPrevious().value(), testString1); } while(javaIt.hasPrevious()) { testString = javaIt.value(); testString1 = javaIt.peekPrevious().value(); javaIt.previous(); QVERIFY(javaIt.value() == testString1); //qDebug(testString + testString1 + javaIt.peekNext().value()); QCOMPARE(javaIt.peekNext().value(), testString1); } }