Moved to class implementation

This commit is contained in:
Erik Frojdh
2022-03-25 15:08:50 +01:00
parent b112cf81c4
commit 5c79a1a1e8
13 changed files with 123 additions and 196 deletions

View File

@@ -18,7 +18,7 @@ target_sources(tests PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/test-CmdParser.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-Module.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-Pattern.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test_ctb_named_dacs.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-CtbConfig.cpp
)
target_include_directories(tests PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../src>")

View File

@@ -134,3 +134,31 @@ TEST_CASE("Create several shared memories", "[detector]") {
CHECK(v[i].IsExisting() == false);
}
}
TEST_CASE("Create create a shared memory with a tag"){
SharedMemory<int> shm(0, -1, "ctbdacs");
REQUIRE(shm.GetName() == "/slsDetectorPackage_detector_0_ctbdacs");
}
TEST_CASE("Create create a shared memory with a tag when SLSDETNAME is set"){
// if SLSDETNAME is already set we unset it but
// save the value
std::string old_slsdetname;
if (getenv(SHM_ENV_NAME))
old_slsdetname = getenv(SHM_ENV_NAME);
unsetenv(SHM_ENV_NAME);
setenv(SHM_ENV_NAME, "myprefix", 1);
SharedMemory<int> shm(0, -1, "ctbdacs");
REQUIRE(shm.GetName() == "/slsDetectorPackage_detector_0_myprefix_ctbdacs");
// Clean up after us
if (old_slsdetname.empty())
unsetenv(SHM_ENV_NAME);
else
setenv(SHM_ENV_NAME, old_slsdetname.c_str(), 1);
}

View File

@@ -1,61 +0,0 @@
#include "catch.hpp"
#include <string>
#include <stdlib.h>
#include "SharedMemory.h"
#include "ctb_named_dacs.h"
using namespace sls;
#include <fstream>
TEST_CASE("Create name for shm dac file") {
// if SLSDETNAME is already set we unset it but
// save the value
std::string old_slsdetname;
if (getenv(SHM_ENV_NAME))
old_slsdetname = getenv(SHM_ENV_NAME);
unsetenv(SHM_ENV_NAME);
int det_id = 0;
REQUIRE(ctb_dac_fname(det_id) == "/dev/shm/slsDetectorPackage_detector_0_ctbdacs");
setenv(SHM_ENV_NAME, "myprefix", 1);
REQUIRE(ctb_dac_fname(det_id) ==
"/dev/shm/slsDetectorPackage_detector_0_myprefix_ctbdacs");
// Clean up after us
if (old_slsdetname.empty())
unsetenv(SHM_ENV_NAME);
else
setenv(SHM_ENV_NAME, old_slsdetname.c_str(), 1);
}
TEST_CASE("Get ctb dac names returns an empty vector when not set"){
int large_unlikely_number = 123203;
auto vec = get_ctb_dac_names(large_unlikely_number);
REQUIRE(vec.empty());
}
TEST_CASE("Remove file fails silently when file is not present"){
int large_unlikely_number = 123203;
REQUIRE_NOTHROW(remove_ctb_dacnames(large_unlikely_number));
}
TEST_CASE("Read dacs from file then remove file"){
int large_unlikely_number = 998765;
std::ofstream out(ctb_dac_fname(large_unlikely_number));
std::string names = "[first, second, third]";
out.write(&names[0], names.size());
out.close();
auto dacnames = get_ctb_dac_names(large_unlikely_number);
REQUIRE(dacnames.size() == 3);
REQUIRE(dacnames[0] == "first");
REQUIRE(dacnames[1] == "second");
REQUIRE(dacnames[2] == "third");
remove_ctb_dacnames(large_unlikely_number);
std::ifstream in(ctb_dac_fname(large_unlikely_number));
REQUIRE_FALSE(in);
}