UnitTests: Fix errors

Former-commit-id: 7d338bd57e8a083e63c5f6387ff37c81109903ed
This commit is contained in:
Lynix
2016-05-05 21:27:36 +02:00
parent 51549f8526
commit f7b0496d62
13 changed files with 96 additions and 37 deletions

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>