Files
openvino/inference-engine/tests/functional/inference_engine/pre_allocator_test.cpp
2021-07-16 18:55:05 +03:00

49 lines
1.3 KiB
C++

// Copyright (C) 2018-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <gtest/gtest.h>
#include <gmock/gmock-spec-builders.h>
#include "ie_allocator.hpp"
#include "details/ie_pre_allocator.hpp"
#include <vector>
using namespace ::testing;
using namespace std;
using namespace InferenceEngine;
class PreallocatorTests: public ::testing::Test {
protected:
std::vector<float> mybuf;
void SetUp() override {
mybuf.resize(10);
allocator = details::make_pre_allocator(&*mybuf.begin(), mybuf.size());
}
std::shared_ptr<IAllocator> allocator;
};
TEST_F(PreallocatorTests, canAccessPreAllocatedMemory) {
void * handle = allocator->alloc(3);
float * ptr = reinterpret_cast<float*>(allocator->lock(handle));
mybuf = { 1.1f, 2.2f, 3.3f };
ASSERT_EQ(ptr, &*mybuf.begin());
ASSERT_EQ(ptr[0], 1.1f);
ASSERT_EQ(ptr[1], 2.2f);
ASSERT_EQ(ptr[2], 3.3f);
}
TEST_F(PreallocatorTests, canNotAllocateMoreMemory) {
//large block such as 10k will result in nullptr
EXPECT_EQ(nullptr, allocator->lock(allocator->alloc(10* sizeof(float) + 1)));
EXPECT_NE(nullptr, allocator->lock(allocator->alloc(10* sizeof(float))));
}
TEST_F(PreallocatorTests, canNotLockWrongHandle) {
void * handle = allocator->alloc(3);
EXPECT_EQ(nullptr, allocator->lock(1 + reinterpret_cast<int*>(handle)));
}