mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-02-12 15:57:12 +01:00
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
95 lines
2.0 KiB
C++
95 lines
2.0 KiB
C++
//
|
|
// SharedMemoryTest.cpp
|
|
//
|
|
// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
//
|
|
|
|
#include "SharedMemoryTest.h"
|
|
#include "CppUnit/TestCaller.h"
|
|
#include "CppUnit/TestSuite.h"
|
|
#include "Poco/SharedMemory.h"
|
|
#include "Poco/Path.h"
|
|
#include "Poco/File.h"
|
|
#include "Poco/Exception.h"
|
|
|
|
|
|
using Poco::SharedMemory;
|
|
|
|
|
|
SharedMemoryTest::SharedMemoryTest(const std::string& name): CppUnit::TestCase(name)
|
|
{
|
|
}
|
|
|
|
|
|
SharedMemoryTest::~SharedMemoryTest()
|
|
{
|
|
}
|
|
|
|
|
|
void SharedMemoryTest::testCreate()
|
|
{
|
|
SharedMemory mem("hi", 4096, SharedMemory::AM_WRITE);
|
|
assertTrue (mem.end()- mem.begin() == 4096);
|
|
mem.begin()[0] = 'A';
|
|
mem.end()[-1] = 'Z';
|
|
}
|
|
|
|
|
|
void SharedMemoryTest::testCreateFromFile()
|
|
{
|
|
Poco::Path p = findDataFile("testdata.txt");
|
|
Poco::File f(p);
|
|
assertTrue (f.exists() && f.isFile());
|
|
SharedMemory mem(f, SharedMemory::AM_READ);
|
|
assertTrue (mem.end() > mem.begin()); // valid?
|
|
assertTrue (mem.end() - mem.begin() == f.getSize());
|
|
assertTrue (mem.begin()[0] == 'A');
|
|
assertTrue (mem.end()[-5] == 'Z');
|
|
}
|
|
|
|
|
|
Poco::Path SharedMemoryTest::findDataFile(const std::string& afile)
|
|
{
|
|
Poco::Path root;
|
|
root.makeAbsolute();
|
|
Poco::Path result;
|
|
while (!Poco::Path::find(root.toString(), "data", result))
|
|
{
|
|
root.makeParent();
|
|
if (root.toString().empty() || root.toString() == "/" || root.toString() == "\\")
|
|
throw Poco::FileNotFoundException("Didn't find data subdir");
|
|
}
|
|
result.makeDirectory();
|
|
result.setFileName(afile);
|
|
Poco::File aFile(result.toString());
|
|
if (!aFile.exists() || (aFile.exists() && !aFile.isFile()))
|
|
throw Poco::FileNotFoundException("Didn't find file " + afile);
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
void SharedMemoryTest::setUp()
|
|
{
|
|
}
|
|
|
|
|
|
void SharedMemoryTest::tearDown()
|
|
{
|
|
}
|
|
|
|
|
|
CppUnit::Test* SharedMemoryTest::suite()
|
|
{
|
|
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SharedMemoryTest");
|
|
|
|
#if !defined(POCO_NO_SHAREDMEMORY)
|
|
CppUnit_addTest(pSuite, SharedMemoryTest, testCreate);
|
|
CppUnit_addTest(pSuite, SharedMemoryTest, testCreateFromFile);
|
|
#endif
|
|
return pSuite;
|
|
}
|