Ejemplo n.º 1
0
TEST(ScopedPointerSet, add) {
    ScopedFooSet set;
    const size_t kCount = 100U;

    Foo::resetStats();

    for (size_t n = 0; n < kCount; ++n) {
        set.add(new Foo(n));
        EXPECT_EQ(n + 1U, set.size());
        EXPECT_EQ(n + 1U, Foo::mCreates);
        EXPECT_EQ(0U, Foo::mDeletes);
    }

    bool flags[kCount];
    for (size_t n = 0; n < kCount; ++n) {
        flags[n] = false;
    }

    Foo** array = set.toArray();
    ASSERT_TRUE(array);
    for (size_t n = 0; n < kCount; ++n) {
        Foo* foo = array[n];
        ASSERT_TRUE(foo);
        EXPECT_FALSE(flags[foo->value()]);
        flags[foo->value()] = true;
    }
    ::free(array);
}
Ejemplo n.º 2
0
TEST(ScopedPointerSet, Iterator) {
    ScopedFooSet set;
    const size_t kCount = 100U;
    Foo* foos[kCount];

    for (size_t n = 0; n < kCount; ++n) {
        foos[n] = new Foo(n);
        set.add(foos[n]);
    }

    EXPECT_EQ(kCount, set.size());

    bool flags[kCount];
    for (size_t n = 0; n < kCount; ++n) {
        flags[n] = false;
    }

    PointerSet<Foo>::Iterator iter(&set);
    for (size_t n = 0; n < kCount; ++n) {
        EXPECT_TRUE(iter.hasNext());
        Foo* foo = iter.next();
        EXPECT_TRUE(foo);
        ASSERT_LT(foo->value(), kCount);
        EXPECT_FALSE(flags[foo->value()]) << "Item #" << foo->value();
        flags[foo->value()] = true;
    }

    EXPECT_FALSE(iter.next());
}