1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-02-14 16:57:12 +01:00
SqMod/vendor/POCO/Foundation/testsuite/src/FIFOBufferStreamTest.cpp
Sandu Liviu Catalin 4a6bfc086c Major plugin refactor and cleanup.
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.
2021-01-30 08:51:39 +02:00

203 lines
4.5 KiB
C++

//
// FIFOBufferStreamTest.cpp
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#include "FIFOBufferStreamTest.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h"
#include "Poco/FIFOBuffer.h"
#include "Poco/FIFOBufferStream.h"
#include "Poco/Delegate.h"
using Poco::FIFOBuffer;
using Poco::FIFOBufferStream;
using Poco::delegate;
FIFOBufferStreamTest::FIFOBufferStreamTest(const std::string& name): CppUnit::TestCase(name)
{
}
FIFOBufferStreamTest::~FIFOBufferStreamTest()
{
}
void FIFOBufferStreamTest::testInput()
{
const char* data = "This is a test";
FIFOBuffer fb1(data, 14);
FIFOBufferStream str1(fb1);
assertTrue (str1.rdbuf()->fifoBuffer().isFull());
int c = str1.get();
assertTrue (c == 'T');
c = str1.get();
assertTrue (c == 'h');
std::string str;
str1 >> str;
assertTrue (str == "is");
char buffer[32];
str1.read(buffer, sizeof(buffer));
assertTrue (str1.gcount() == 10);
buffer[str1.gcount()] = 0;
assertTrue (std::string(" is a test") == buffer);
const char* data2 = "123";
FIFOBufferStream str2(data2, 3);
c = str2.get();
assertTrue (c == '1');
assertTrue (str2.good());
c = str2.get();
assertTrue (c == '2');
str2.unget();
c = str2.get();
assertTrue (c == '2');
assertTrue (str2.good());
c = str2.get();
assertTrue (c == '3');
assertTrue (str2.good());
c = str2.get();
assertTrue (c == -1);
assertTrue (str2.eof());
}
void FIFOBufferStreamTest::testOutput()
{
char output[64];
FIFOBufferStream iostr1(output, 64);
iostr1 << "This is a test " << 42 << std::ends << std::flush;
assertTrue (std::string("This is a test 42") == output);
}
void FIFOBufferStreamTest::testNotify()
{
FIFOBuffer fb(18);
FIFOBufferStream iostr(fb);
assertTrue (iostr.rdbuf()->fifoBuffer().isEmpty());
assertTrue (0 == _readableToNot);
assertTrue (0 == _notToReadable);
assertTrue (0 == _writableToNot);
assertTrue (0 == _notToWritable);
iostr.readable += delegate(this, &FIFOBufferStreamTest::onReadable);
iostr.writable += delegate(this, &FIFOBufferStreamTest::onWritable);
iostr << "This is a test " << 42 << std::ends << std::flush;
assertTrue (iostr.rdbuf()->fifoBuffer().isFull());
assertTrue (0 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (0 == _notToWritable);
char input[64];
iostr >> input;
assertTrue (std::string("This") == input);
assertTrue (iostr.rdbuf()->fifoBuffer().isEmpty());
assertTrue (1 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr >> input;
assertTrue (std::string("is") == input);
assertTrue (1 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr >> input;
assertTrue (std::string("a") == input);
assertTrue (1 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr >> input;
assertTrue (std::string("test") == input);
assertTrue (1 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr >> input;
assertTrue (std::string("42") == input);
assertTrue (1 == _readableToNot);
assertTrue (1 == _notToReadable);
assertTrue (1 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr.clear();
assertTrue (iostr.good());
iostr << "This is a test " << 42 << std::ends << std::flush;
assertTrue (iostr.rdbuf()->fifoBuffer().isFull());
assertTrue (1 == _readableToNot);
assertTrue (2 == _notToReadable);
assertTrue (2 == _writableToNot);
assertTrue (1 == _notToWritable);
iostr.readable -= delegate(this, &FIFOBufferStreamTest::onReadable);
iostr.writable -= delegate(this, &FIFOBufferStreamTest::onWritable);
}
void FIFOBufferStreamTest::onReadable(bool& b)
{
if (b) ++_notToReadable;
else ++_readableToNot;
};
void FIFOBufferStreamTest::onWritable(bool& b)
{
if (b) ++_notToWritable;
else ++_writableToNot;
}
void FIFOBufferStreamTest::setUp()
{
_readableToNot = 0;
_notToReadable = 0;
_writableToNot = 0;
_notToWritable = 0;
}
void FIFOBufferStreamTest::tearDown()
{
}
CppUnit::Test* FIFOBufferStreamTest::suite()
{
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("FIFOBufferStreamTest");
CppUnit_addTest(pSuite, FIFOBufferStreamTest, testInput);
CppUnit_addTest(pSuite, FIFOBufferStreamTest, testOutput);
CppUnit_addTest(pSuite, FIFOBufferStreamTest, testNotify);
return pSuite;
}