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/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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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/Core/Endianness.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <atomic>
|
||||
#include <iosfwd>
|
||||
#include <memory>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <Nazara/Utility/Config.hpp>
|
||||
|
||||
namespace Nz
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Reference in New Issue