/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 2015 Danny Robson */ #include "memory/buffer/circular.hpp" #include "tap.hpp" #include /////////////////////////////////////////////////////////////////////////////// int main (void) { util::TAP::logger tap; // provoke usage of the smallest size buffer we can get away with so we // might detect caching issues or similar. constexpr size_t CAPACITY = 1; util::memory::buffer::circular buffer (CAPACITY); // zero fill to ensure our value setting tests don't accidentall succeed std::fill_n (buffer.begin (), buffer.size () * 2, 0); // sanity check we haven't accidentally mapped an empty region tap.expect_neq (buffer.begin (), buffer.end (), "non-zero sized region"); // check a near overrun is replicated buffer.end ()[0] = 1; tap.expect_eq (buffer.begin ()[0], buffer.end ()[0], "near overrun is replicated"); // check a far overrun is replicated buffer.end ()[buffer.size () - 1] = 2; tap.expect_eq (buffer.begin ()[buffer.size () - 1], buffer.end ()[buffer.size () - 1], "far overrun is replicated"); return tap.status (); }