blob: a24041bef8de3f6bf832c2a46c5f69ab9a88ed1a [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 <lib/fzl/memory-probe.h>
#include <unittest/unittest.h>
namespace {
bool probe_readwrite() {
BEGIN_TEST;
int valid = 0;
EXPECT_TRUE(probe_for_read(&valid));
EXPECT_TRUE(probe_for_write(&valid));
END_TEST;
}
bool probe_readonly() {
BEGIN_TEST;
// This uses the address of this function. This assumes that the code section is readable but
// not writable.
void* this_function = reinterpret_cast<void*>(&probe_readonly);
EXPECT_TRUE(probe_for_read(this_function));
EXPECT_FALSE(probe_for_write(this_function));
END_TEST;
}
bool probe_invalid() {
BEGIN_TEST;
EXPECT_FALSE(probe_for_read(nullptr));
EXPECT_FALSE(probe_for_write(nullptr));
END_TEST;
}
} // namespace
BEGIN_TEST_CASE(memory_probe_tests)
RUN_TEST(probe_readwrite)
RUN_TEST(probe_readonly)
RUN_TEST(probe_invalid)
END_TEST_CASE(memory_probe_tests)