UnitTests: Fix errors

Former-commit-id: fb2340e5c7c264193f1ac363d6387486215aef7e
This commit is contained in:
Lynix 2016-05-05 21:27:36 +02:00
parent 5e52988d87
commit 385c597434
13 changed files with 96 additions and 37 deletions

View File

@ -73,7 +73,7 @@
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/Semaphore.hpp>
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/SparsePtr.hpp>
#include <Nazara/Core/StdLogger.hpp>

View File

@ -9,7 +9,7 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Enums.hpp>
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <functional>
#include <tuple>
#include <type_traits>

View File

@ -209,14 +209,8 @@ namespace Nz
template<typename T>
std::enable_if_t<std::is_arithmetic<T>::value, bool> Serialize(SerializationContext& context, T value)
{
// Flush bits if a writing is in progress
if (context.currentBitPos != 8)
{
context.currentBitPos = 8;
if (!Serialize<UInt8>(context, context.currentByte))
NazaraWarning("Failed to flush bits");
}
// Flush bits in case a writing is in progress
context.FlushBits();
if (context.endianness != Endianness_Unknown && context.endianness != GetPlatformEndianness())
SwapBytes(&value, sizeof(T));
@ -269,8 +263,7 @@ namespace Nz
{
NazaraAssert(value, "Invalid data pointer");
// Reset bit position
context.currentBitPos = 8;
context.ResetBitPosition();
if (context.stream->Read(value, sizeof(T)) == sizeof(T))
{

View File

@ -9,7 +9,7 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/ByteArray.hpp>
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Core/Stream.hpp>
#include <memory>

View File

@ -8,6 +8,7 @@
#define NAZARA_SERIALIZATION_HPP
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Config.hpp>
#include <Nazara/Core/Endianness.hpp>
#include <functional>
#include <tuple>
@ -17,13 +18,18 @@ namespace Nz
{
class Stream;
struct SerializationContext
struct NAZARA_CORE_API SerializationContext
{
Stream* stream;
Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding
UInt8 currentBitPos = 8; //< 8 means no bit is currently wrote
UInt8 currentByte; //< Undefined value, will be initialized at the first bit write
void FlushBits();
inline void ResetBitPosition();
};
}
#include <Nazara/Core/SerializationContext.inl>
#endif // NAZARA_SERIALIZATION_HPP

View File

@ -0,0 +1,24 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Engine - Core module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Core/Debug.hpp>
namespace Nz
{
/*!
* \brief Reset the current bit cursor
* \remark This function only reset the cursor position, it doesn't do any writing
if you wish to write all bits and reset bit position, call FlushBits
\see FlushBits
*/
inline void SerializationContext::ResetBitPosition()
{
currentBitPos = 8;
}
}
#include <Nazara/Core/DebugOff.hpp>

View File

@ -9,7 +9,7 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Endianness.hpp>
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <atomic>
#include <iosfwd>
#include <memory>

View File

@ -454,24 +454,24 @@ namespace Nz
return true;
}
/*!
* \brief Sets the size of the file
* \return true if the file size has correctly changed
*
* \param size The size the file should have after this call
*
* \remark The cursor position is not affected by this call
* \remark The file must be open in write mode
*/
bool File::SetSize(UInt64 size)
{
NazaraLock(m_mutex)
/*!
* \brief Sets the size of the file
* \return true if the file size has correctly changed
*
* \param size The size the file should have after this call
*
* \remark The cursor position is not affected by this call
* \remark The file must be open in write mode
*/
bool File::SetSize(UInt64 size)
{
NazaraLock(m_mutex)
NazaraAssert(IsOpen(), "File is not open");
NazaraAssert(IsWritable(), "File is not writable");
NazaraAssert(IsOpen(), "File is not open");
NazaraAssert(IsWritable(), "File is not writable");
return m_impl->SetSize(size);
}
return m_impl->SetSize(size);
}
/*!
* \brief Sets the file path

View File

@ -0,0 +1,35 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Engine - Core module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Core/Algorithm.hpp>
#include <Nazara/Core/Error.hpp>
#include <Nazara/Core/Debug.hpp>
namespace Nz
{
/*!
* \ingroup core
* \class Nz::SerializationContext
* \brief Structure containing a serialization/unserialization context states
*/
/*!
* Write bits to the stream (if any) and reset the current bit cursor
* \see ResetBitPosition
*/
void SerializationContext::FlushBits()
{
if (currentBitPos != 8)
{
ResetBitPosition();
// Serialize will reset the bit position
if (!Serialize<UInt8>(*this, currentByte))
NazaraWarning("Failed to flush bits");
}
}
}

View File

@ -8,7 +8,7 @@
#define NAZARA_LOADERS_DDS_CONSTANTS_HPP
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Utility/Config.hpp>
namespace Nz

View File

@ -7,7 +7,7 @@ SCENARIO("Bitset", "[CORE][BITSET]")
{
GIVEN("Allocate and constructor")
{
Nz::Bitset<> bitset(3);
Nz::Bitset<> bitset(3, false);
THEN("Capacity is 3 and size is 3")
{

View File

@ -78,9 +78,9 @@ SCENARIO("File", "[CORE][FILE]")
THEN("The relative positioning should disappear")
{
Nz::String containingNoMoreDot = "/resources/Spaceship/spaceship.mtl";
REQUIRE(Nz::File::AbsolutePath(containingDot) == containingNoMoreDot);
REQUIRE(Nz::File::AbsolutePath(containingDoubleDot) == containingNoMoreDot);
Nz::String containingNoMoreDot = Nz::File::NormalizePath("/resources/Spaceship/spaceship.mtl");
REQUIRE(Nz::File::AbsolutePath(containingDot).EndsWith(containingNoMoreDot));
REQUIRE(Nz::File::AbsolutePath(containingDoubleDot).EndsWith(containingNoMoreDot));
}
}
}

View File

@ -1,4 +1,4 @@
#include <Nazara/Core/Serialization.hpp>
#include <Nazara/Core/SerializationContext.hpp>
#include <Nazara/Core/Color.hpp>
#include <Nazara/Core/MemoryView.hpp>
@ -35,6 +35,7 @@ SCENARIO("Serialization", "[CORE][SERIALIZATION]")
{
context.stream->SetCursorPos(0);
REQUIRE(Serialize(context, true));
context.FlushBits(); //< Don't forget to flush bits (it is NOT done by the stream)
context.stream->SetCursorPos(0);
bool value = false;
REQUIRE(Unserialize(context, &value));