blob: 973e0c0da6eb3044d49034ac3618cd4d79ffba9a [file] [log] [blame]
// Copyright 2016 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/magma_service/mock/mock_mmio.h>
#include <gtest/gtest.h>
static void test_mock_mmio(magma::PlatformMmio* mmio) {
ASSERT_NE(mmio, nullptr);
// Verify we can write to and read from the mmio space.
{
uint32_t expected = 0xdeadbeef;
mmio->Write32(expected, 0);
uint32_t val = mmio->Read32(0);
EXPECT_EQ(val, expected);
mmio->Write32(expected, mmio->size() - sizeof(uint32_t));
val = mmio->Read32(mmio->size() - sizeof(uint32_t));
EXPECT_EQ(val, expected);
}
{
uint64_t expected = 0xabcddeadbeef1234;
mmio->Write64(expected, 0);
uint64_t val = mmio->Read64(0);
EXPECT_EQ(val, expected);
mmio->Write64(expected, mmio->size() - sizeof(uint64_t));
val = mmio->Read64(mmio->size() - sizeof(uint64_t));
EXPECT_EQ(val, expected);
}
}
TEST(PlatformMmio, MockMmio) {
test_mock_mmio(std::unique_ptr<MockMmio>(MockMmio::Create(8)).get());
test_mock_mmio(std::unique_ptr<MockMmio>(MockMmio::Create(16)).get());
test_mock_mmio(std::unique_ptr<MockMmio>(MockMmio::Create(64)).get());
test_mock_mmio(std::unique_ptr<MockMmio>(MockMmio::Create(1024)).get());
}