diff --git a/tests/unit/utils/test_circular_buffer.nompi.cc b/tests/unit/utils/test_circular_buffer.nompi.cc new file mode 100644 index 0000000000..75d9c28775 --- /dev/null +++ b/tests/unit/utils/test_circular_buffer.nompi.cc @@ -0,0 +1,125 @@ +/* +//@HEADER +// ***************************************************************************** +// +// test_circular_buffer.nompi.cc +// DARMA/vt => Virtual Transport +// +// Copyright 2019-2021 National Technology & Engineering Solutions of Sandia, LLC +// (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. +// Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact darma@sandia.gov +// +// ***************************************************************************** +//@HEADER +*/ + +#include + +#include +#include "test_harness.h" + +#include + +namespace vt { namespace tests { namespace unit { + +using TestCircularBuffer = TestHarness; + +TEST_F(TestCircularBuffer, test_circular_buffer_1) { + util::container::CircularBuffer buf; + + EXPECT_TRUE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 0); + + buf.push(10); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 1); + + buf.push(20); + buf.push(30); + buf.push(40); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 4); + + EXPECT_EQ(buf.pop(), 10); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 3); + + EXPECT_EQ(buf.pop(), 20); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 2); + + EXPECT_EQ(buf.pop(), 30); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 1); + + buf.push(50); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 2); + + EXPECT_EQ(buf.pop(), 40); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 1); + + EXPECT_EQ(buf.pop(), 50); + + EXPECT_TRUE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 0); + + buf.push(10); + + EXPECT_FALSE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 1); + + EXPECT_EQ(buf.pop(), 10); + + EXPECT_TRUE(buf.empty()); + EXPECT_FALSE(buf.full()); + EXPECT_EQ(buf.len(), 0); +} + +}}} /* end namespace vt::tests::unit */