From 53ffe4b520a864547b02bd80e66bcfa3d77487cf Mon Sep 17 00:00:00 2001 From: KyleKlenk <kyle.c.klenk@gmail.com> Date: Tue, 3 May 2022 16:17:40 -0600 Subject: [PATCH] fixed an issue that showed up in the unit tests --- build/makefile | 16 ++-- build/source/actors/OutputManager.h | 4 +- build/source/testing/testing_main.cc | 107 +++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 10 deletions(-) diff --git a/build/makefile b/build/makefile index ab14e95..46d5f5c 100644 --- a/build/makefile +++ b/build/makefile @@ -16,16 +16,16 @@ # Production runs -FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -FLAGS_ACTORS = -O3 +# FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC +# FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC +# FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC +# FLAGS_ACTORS = -O3 # # Debug runs -# FLAGS_NOAH = -pg -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC -# FLAGS_COMM = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC -# FLAGS_SUMMA = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC -# FLAGS_ACTORS = -pg -g -O0 -Wall +FLAGS_NOAH = -pg -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC +FLAGS_COMM = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC +FLAGS_SUMMA = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC +FLAGS_ACTORS = -pg -g -O0 -Wall #======================================================================== diff --git a/build/source/actors/OutputManager.h b/build/source/actors/OutputManager.h index 901e7f5..af99740 100644 --- a/build/source/actors/OutputManager.h +++ b/build/source/actors/OutputManager.h @@ -86,8 +86,8 @@ class OutputManager { void addActor(caf::actor actor, int index) { // Index has to be subtracted by 1 because Fortran array starts at 1 int listIndex = (index - 1) / this->avgSizeOfActorList; - if (listIndex > this->numVectors - 1 || listIndex < 0) { - throw "List Index Out Of Range"; + if (listIndex > this->numVectors - 1) { + listIndex = this->numVectors - 1; } this->list[listIndex]->addActor(actor); diff --git a/build/source/testing/testing_main.cc b/build/source/testing/testing_main.cc index f054f02..c935b0f 100644 --- a/build/source/testing/testing_main.cc +++ b/build/source/testing/testing_main.cc @@ -157,6 +157,7 @@ void testOutputManager(caf::actor_system& sys) { auto a9 = sys.spawn(test_coordinator); auto a10 = sys.spawn(test_coordinator); + std::cout << "Creating Output Manager" << std::endl; auto OM = new OutputManager(5, 10); for (int i = 0; i < 5; i++) { @@ -250,6 +251,112 @@ void testOutputManager(caf::actor_system& sys) { IS_TRUE(OM->getSize(3) == 2); IS_TRUE(OM->getSize(4) == 1); + OM->popActor(1); + OM->popActor(2); + OM->popActor(2); + OM->popActor(3); + OM->popActor(3); + OM->popActor(4); + + IS_TRUE(OM->getSize(0) == 0); + IS_TRUE(OM->getSize(1) == 0); + IS_TRUE(OM->getSize(2) == 0); + IS_TRUE(OM->getSize(3) == 0); + IS_TRUE(OM->getSize(4) == 0); + + delete OM; + + std::cout << "Creating Output Manager 2 with 3 vectors" << std::endl; + + auto OM2 = new OutputManager(3, 10); + try { + OM2->addActor(a1, 1); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 1); + IS_TRUE(OM2->getSize(1) == 0); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a2, 2); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 2); + IS_TRUE(OM2->getSize(1) == 0); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a3, 3); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 0); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a4, 4); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 1); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a5, 5); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 2); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a6, 6); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 3); + IS_TRUE(OM2->getSize(2) == 0); + try { + OM2->addActor(a7, 7); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 3); + IS_TRUE(OM2->getSize(2) == 1); + try { + OM2->addActor(a8, 8); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 3); + IS_TRUE(OM2->getSize(2) == 2); + try { + OM2->addActor(a9, 9); + } catch (const char* msg) { + std::cerr << msg << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 3); + IS_TRUE(OM2->getSize(2) == 3); + IS_TRUE(OM2->isFull(0)); + IS_TRUE(OM2->isFull(1)); + IS_TRUE(!OM2->isFull(2)); + try { + OM2->addActor(a10, 10); + } catch (const char* msg) { + std::cerr << msg << 10 << std::endl; + } + IS_TRUE(OM2->getSize(0) == 3); + IS_TRUE(OM2->getSize(1) == 3); + IS_TRUE(OM2->getSize(2) == 4); + IS_TRUE(OM2->isFull(2)); + + + + } -- GitLab