void tst_QCache::take() { QCache<QString, Foo> cache; QCOMPARE(cache.take(QString()), (Foo*)0); QCOMPARE(cache.take("alpha"), (Foo*)0); QVERIFY(cache.isEmpty()); Foo *f1 = new Foo; cache.insert("alpha", f1, 10); QCOMPARE(cache.size(), 1); QVERIFY(cache["alpha"] == f1); cache.insert("beta", new Foo, 20); QCOMPARE(cache.size(), 2); QCOMPARE(cache.take("alpha"), f1); QCOMPARE(cache.size(), 1); QCOMPARE(cache.totalCost(), 20); QCOMPARE(Foo::count, 2); delete f1; QCOMPARE(Foo::count, 1); QCOMPARE(cache.take("alpha"), (Foo*)0); QCOMPARE(Foo::count, 1); QCOMPARE(cache.size(), 1); QCOMPARE(cache.totalCost(), 20); cache.setMaxCost(1); QCOMPARE(cache.size(), 0); QCOMPARE(cache.take("beta"), (Foo*)0); QCOMPARE(cache.size(), 0); }
void tst_QCache::axioms_on_key_type() { QCache<KeyType, ValueType> foo; foo.setMaxCost(1); foo.clear(); foo.insert(KeyType(123), new ValueType(123)); foo.object(KeyType(123)); foo.contains(KeyType(456)); foo[KeyType(456)]; foo.remove(KeyType(456)); foo.remove(KeyType(123)); foo.take(KeyType(789)); // If this fails, contact the maintaner QVERIFY(sizeof(QHash<int, int>) == sizeof(void *)); }
QGLBlurTextureInfo *QGLBlurTextureCache::takeBlurTextureInfo(const QPixmap &pixmap) { return cache.take(pixmap.cacheKey()); }