UnitTests: Fix errors
Former-commit-id: 7d338bd57e8a083e63c5f6387ff37c81109903ed
This commit is contained in:
parent
51549f8526
commit
f7b0496d62
|
|
@ -73,7 +73,7 @@
|
||||||
#include <Nazara/Core/ResourceLoader.hpp>
|
#include <Nazara/Core/ResourceLoader.hpp>
|
||||||
#include <Nazara/Core/ResourceManager.hpp>
|
#include <Nazara/Core/ResourceManager.hpp>
|
||||||
#include <Nazara/Core/Semaphore.hpp>
|
#include <Nazara/Core/Semaphore.hpp>
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
#include <Nazara/Core/Signal.hpp>
|
#include <Nazara/Core/Signal.hpp>
|
||||||
#include <Nazara/Core/SparsePtr.hpp>
|
#include <Nazara/Core/SparsePtr.hpp>
|
||||||
#include <Nazara/Core/StdLogger.hpp>
|
#include <Nazara/Core/StdLogger.hpp>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Core/Enums.hpp>
|
#include <Nazara/Core/Enums.hpp>
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
|
||||||
|
|
@ -209,14 +209,8 @@ namespace Nz
|
||||||
template<typename T>
|
template<typename T>
|
||||||
std::enable_if_t<std::is_arithmetic<T>::value, bool> Serialize(SerializationContext& context, T value)
|
std::enable_if_t<std::is_arithmetic<T>::value, bool> Serialize(SerializationContext& context, T value)
|
||||||
{
|
{
|
||||||
// Flush bits if a writing is in progress
|
// Flush bits in case a writing is in progress
|
||||||
if (context.currentBitPos != 8)
|
context.FlushBits();
|
||||||
{
|
|
||||||
context.currentBitPos = 8;
|
|
||||||
|
|
||||||
if (!Serialize<UInt8>(context, context.currentByte))
|
|
||||||
NazaraWarning("Failed to flush bits");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context.endianness != Endianness_Unknown && context.endianness != GetPlatformEndianness())
|
if (context.endianness != Endianness_Unknown && context.endianness != GetPlatformEndianness())
|
||||||
SwapBytes(&value, sizeof(T));
|
SwapBytes(&value, sizeof(T));
|
||||||
|
|
@ -269,8 +263,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
NazaraAssert(value, "Invalid data pointer");
|
NazaraAssert(value, "Invalid data pointer");
|
||||||
|
|
||||||
// Reset bit position
|
context.ResetBitPosition();
|
||||||
context.currentBitPos = 8;
|
|
||||||
|
|
||||||
if (context.stream->Read(value, sizeof(T)) == sizeof(T))
|
if (context.stream->Read(value, sizeof(T)) == sizeof(T))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Core/ByteArray.hpp>
|
#include <Nazara/Core/ByteArray.hpp>
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
#include <Nazara/Core/Stream.hpp>
|
#include <Nazara/Core/Stream.hpp>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#define NAZARA_SERIALIZATION_HPP
|
#define NAZARA_SERIALIZATION_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/Config.hpp>
|
||||||
#include <Nazara/Core/Endianness.hpp>
|
#include <Nazara/Core/Endianness.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
@ -17,13 +18,18 @@ namespace Nz
|
||||||
{
|
{
|
||||||
class Stream;
|
class Stream;
|
||||||
|
|
||||||
struct SerializationContext
|
struct NAZARA_CORE_API SerializationContext
|
||||||
{
|
{
|
||||||
Stream* stream;
|
Stream* stream;
|
||||||
Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding
|
Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding
|
||||||
UInt8 currentBitPos = 8; //< 8 means no bit is currently wrote
|
UInt8 currentBitPos = 8; //< 8 means no bit is currently wrote
|
||||||
UInt8 currentByte; //< Undefined value, will be initialized at the first bit write
|
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
|
#endif // NAZARA_SERIALIZATION_HPP
|
||||||
|
|
@ -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>
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Core/Endianness.hpp>
|
#include <Nazara/Core/Endianness.hpp>
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#define NAZARA_LOADERS_DDS_CONSTANTS_HPP
|
#define NAZARA_LOADERS_DDS_CONSTANTS_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
#include <Nazara/Utility/Config.hpp>
|
#include <Nazara/Utility/Config.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ SCENARIO("Bitset", "[CORE][BITSET]")
|
||||||
{
|
{
|
||||||
GIVEN("Allocate and constructor")
|
GIVEN("Allocate and constructor")
|
||||||
{
|
{
|
||||||
Nz::Bitset<> bitset(3);
|
Nz::Bitset<> bitset(3, false);
|
||||||
|
|
||||||
THEN("Capacity is 3 and size is 3")
|
THEN("Capacity is 3 and size is 3")
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -78,9 +78,9 @@ SCENARIO("File", "[CORE][FILE]")
|
||||||
|
|
||||||
THEN("The relative positioning should disappear")
|
THEN("The relative positioning should disappear")
|
||||||
{
|
{
|
||||||
Nz::String containingNoMoreDot = "/resources/Spaceship/spaceship.mtl";
|
Nz::String containingNoMoreDot = Nz::File::NormalizePath("/resources/Spaceship/spaceship.mtl");
|
||||||
REQUIRE(Nz::File::AbsolutePath(containingDot) == containingNoMoreDot);
|
REQUIRE(Nz::File::AbsolutePath(containingDot).EndsWith(containingNoMoreDot));
|
||||||
REQUIRE(Nz::File::AbsolutePath(containingDoubleDot) == containingNoMoreDot);
|
REQUIRE(Nz::File::AbsolutePath(containingDoubleDot).EndsWith(containingNoMoreDot));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include <Nazara/Core/Serialization.hpp>
|
#include <Nazara/Core/SerializationContext.hpp>
|
||||||
|
|
||||||
#include <Nazara/Core/Color.hpp>
|
#include <Nazara/Core/Color.hpp>
|
||||||
#include <Nazara/Core/MemoryView.hpp>
|
#include <Nazara/Core/MemoryView.hpp>
|
||||||
|
|
@ -35,6 +35,7 @@ SCENARIO("Serialization", "[CORE][SERIALIZATION]")
|
||||||
{
|
{
|
||||||
context.stream->SetCursorPos(0);
|
context.stream->SetCursorPos(0);
|
||||||
REQUIRE(Serialize(context, true));
|
REQUIRE(Serialize(context, true));
|
||||||
|
context.FlushBits(); //< Don't forget to flush bits (it is NOT done by the stream)
|
||||||
context.stream->SetCursorPos(0);
|
context.stream->SetCursorPos(0);
|
||||||
bool value = false;
|
bool value = false;
|
||||||
REQUIRE(Unserialize(context, &value));
|
REQUIRE(Unserialize(context, &value));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue