This source file includes following definitions.
- TEST
- TEST
- TEST
- TEST
- main
#if defined(TYPE_PROFILING)
#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/tcmalloc/chromium/src/gperftools/type_profiler_map.h"
namespace base {
namespace type_profiler {
static const void* const g_const_null = static_cast<const void*>(NULL);
TEST(TypeProfilerMapTest, NormalOperation) {
scoped_ptr<int> dummy(new int(48));
const std::type_info* type;
type = LookupType(dummy.get());
EXPECT_EQ(g_const_null, type);
InsertType(dummy.get(), 12, typeid(int));
type = LookupType(dummy.get());
ASSERT_NE(g_const_null, type);
EXPECT_STREQ(typeid(int).name(), type->name());
EraseType(dummy.get());
type = LookupType(dummy.get());
EXPECT_EQ(g_const_null, type);
}
TEST(TypeProfilerMapTest, EraseWithoutInsert) {
scoped_ptr<int> dummy(new int(48));
const std::type_info* type;
for (int i = 0; i < 10; ++i) {
EraseType(dummy.get());
type = LookupType(dummy.get());
EXPECT_EQ(g_const_null, type);
}
}
TEST(TypeProfilerMapTest, InsertThenMultipleErase) {
scoped_ptr<int> dummy(new int(48));
const std::type_info* type;
InsertType(dummy.get(), 12, typeid(int));
type = LookupType(dummy.get());
ASSERT_NE(g_const_null, type);
EXPECT_STREQ(typeid(int).name(), type->name());
for (int i = 0; i < 10; ++i) {
EraseType(dummy.get());
type = LookupType(dummy.get());
EXPECT_EQ(g_const_null, type);
}
}
TEST(TypeProfilerMapTest, MultipleInsertWithoutErase) {
scoped_ptr<int> dummy(new int(48));
const std::type_info* type;
InsertType(dummy.get(), 12, typeid(int));
type = LookupType(dummy.get());
ASSERT_NE(g_const_null, type);
EXPECT_STREQ(typeid(int).name(), type->name());
InsertType(dummy.get(), 5, typeid(char));
type = LookupType(dummy.get());
ASSERT_NE(g_const_null, type);
EXPECT_STREQ(typeid(char).name(), type->name());
InsertType(dummy.get(), 129, typeid(long));
type = LookupType(dummy.get());
ASSERT_NE(g_const_null, type);
EXPECT_STREQ(typeid(long).name(), type->name());
EraseType(dummy.get());
type = LookupType(dummy.get());
EXPECT_EQ(g_const_null, type);
}
}
}
#endif
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}