blob: f9bee3200ab3862bc1254e35a21a4359c2654014 [file] [log] [blame] [edit]
// Copyright 2019 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "core/fxcrt/fx_memory_wrappers.h"
#include <memory>
#include <sstream>
#include <string>
#include <vector>
#include "build/build_config.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(fxcrt, FxFreeDeleter) {
std::unique_ptr<int, FxFreeDeleter> empty(nullptr);
std::unique_ptr<int, FxFreeDeleter> thing(FX_Alloc(int, 1));
std::unique_ptr<int, FxFreeDeleter> several(FX_Alloc(int, 100));
EXPECT_FALSE(empty);
EXPECT_TRUE(thing);
EXPECT_TRUE(several);
}
TEST(fxcrt, FxAllocAllocator) {
// Let ASAN sanity check some simple operations.
std::vector<int, FxAllocAllocator<int>> vec;
vec.push_back(42);
vec.reserve(100);
vec.resize(20);
vec[11] = 42;
std::vector<int, FxAllocAllocator<int>> vec2 = vec;
vec = std::move(vec2);
vec2.resize(0);
vec2.push_back(42);
}
TEST(fxcrt, FxStringAllocator) {
// Let ASAN sanity check some simple operations.
std::basic_ostringstream<char, std::char_traits<char>,
FxStringAllocator<char>>
str;
str << 'B';
str << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
str << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
str << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
str << 42.0f;
}