1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-18 13:32:32 +01:00

Fix INI tests for Windows' 2-byte newlines

This commit is contained in:
Michał Janiszewski
2017-02-23 23:50:58 +01:00
parent e5d569ac6c
commit d23edb0f91

View File

@@ -3,6 +3,7 @@
#include "openrct2/config/ConfigEnum.hpp"
#include "openrct2/config/IniWriter.hpp"
#include "openrct2/core/MemoryStream.h"
#include "openrct2/platform/platform.h"
class IniWriterTest : public testing::Test
{
@@ -33,11 +34,12 @@ TEST_F(IniWriterTest, create_one_section)
iw->WriteSection("OpenRCT2");
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 12);
ASSERT_EQ(ms->GetLength(), 12);
ASSERT_GE(ms->GetPosition(), 12);
ASSERT_LE(ms->GetPosition(), 13); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "[OpenRCT2]\n");
ASSERT_STREQ(ini, "[OpenRCT2]" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -55,11 +57,13 @@ TEST_F(IniWriterTest, create_multiple_sections)
iw->WriteSection("OpenRCT4");
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 48);
ASSERT_EQ(ms->GetLength(), 48);
ASSERT_GE(ms->GetPosition(), 48);
ASSERT_LE(ms->GetPosition(), 55); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "[OpenRCT1]\n\n[OpenRCT2]\n\n[OpenRCT3]\n\n[OpenRCT4]\n");
ASSERT_STREQ(ini, "[OpenRCT1]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[OpenRCT2]" PLATFORM_NEWLINE PLATFORM_NEWLINE
"[OpenRCT3]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[OpenRCT4]" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -74,11 +78,12 @@ TEST_F(IniWriterTest, create_loose_bool_entry)
iw->WriteBoolean("boolval", true);
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 16);
ASSERT_EQ(ms->GetLength(), 16);
ASSERT_GE(ms->GetPosition(), 16);
ASSERT_LE(ms->GetPosition(), 17); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "boolval = true\n");
ASSERT_STREQ(ini, "boolval = true" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -94,11 +99,12 @@ TEST_F(IniWriterTest, create_loose_enum_entry)
iw->WriteEnum<sint32>("sint32", 0, Enum_Currency);
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 34);
ASSERT_EQ(ms->GetLength(), 34);
ASSERT_GE(ms->GetPosition(), 34);
ASSERT_LE(ms->GetPosition(), 36); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "by_string = stringval\nsint32 = 0\n");
ASSERT_STREQ(ini, "by_string = stringval" PLATFORM_NEWLINE "sint32 = 0" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -113,12 +119,13 @@ TEST_F(IniWriterTest, create_loose_float_entry)
iw->WriteFloat("one", 1.);
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 16);
ASSERT_EQ(ms->GetLength(), 16);
ASSERT_GE(ms->GetPosition(), 16);
ASSERT_LE(ms->GetPosition(), 17); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
// This will be non-fatal due to float.
EXPECT_STREQ(ini, "one = 1.000000\n");
EXPECT_STREQ(ini, "one = 1.000000" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -133,15 +140,17 @@ TEST_F(IniWriterTest, create_loose_sint32_entry)
iw->WriteSint32("one", 1);
iw->WriteSint32("zero", 0);
iw->WriteSint32("minusone", -1);
iw->WriteSint32("intmin", std::numeric_limits<sint32>::min());
iw->WriteSint32("intmax", std::numeric_limits<sint32>::max());
iw->WriteSint32("intmin", (std::numeric_limits<sint32>::min)());
iw->WriteSint32("intmax", (std::numeric_limits<sint32>::max)());
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 73);
ASSERT_EQ(ms->GetLength(), 73);
ASSERT_GE(ms->GetPosition(), 73);
ASSERT_LE(ms->GetPosition(), 78); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "one = 1\nzero = 0\nminusone = -1\nintmin = -2147483648\nintmax = 2147483647\n");
ASSERT_STREQ(ini, "one = 1" PLATFORM_NEWLINE "zero = 0" PLATFORM_NEWLINE "minusone = -1" PLATFORM_NEWLINE
"intmin = -2147483648" PLATFORM_NEWLINE "intmax = 2147483647" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -156,11 +165,12 @@ TEST_F(IniWriterTest, create_loose_string_entry)
iw->WriteString("path", u8"C:'\\some/dir\\here/神鷹暢遊");
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 43);
ASSERT_EQ(ms->GetLength(), 43);
ASSERT_GE(ms->GetPosition(), 43);
ASSERT_LE(ms->GetPosition(), 44); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "path = \"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"\n");
ASSERT_STREQ(ini, "path = \"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;
@@ -181,12 +191,15 @@ TEST_F(IniWriterTest, create_multiple_section_with_values)
iw->WriteString("path", u8"C:'\\some/dir\\here/神鷹暢遊");
int8_t null_terminator = 0;
ms->Write(&null_terminator, 1);
ASSERT_EQ(ms->GetPosition(), 99);
ASSERT_EQ(ms->GetLength(), 99);
ASSERT_GE(ms->GetPosition(), 99);
ASSERT_LE(ms->GetPosition(), 108); // Accomodate for varying-sized newline (Windows)
ASSERT_EQ(ms->GetLength(), ms->GetPosition());
ms->SetPosition(0);
const char * ini = (const char *)ms->ReadString();
ASSERT_STREQ(ini, "[bool]\nboolval = true\n\n[int]\none = 1\nzero = 0\n\n[string]\npath = "
"\"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"\n");
ASSERT_STREQ(ini,
"[bool]" PLATFORM_NEWLINE "boolval = true" PLATFORM_NEWLINE PLATFORM_NEWLINE "[int]" PLATFORM_NEWLINE
"one = 1" PLATFORM_NEWLINE "zero = 0" PLATFORM_NEWLINE PLATFORM_NEWLINE "[string]" PLATFORM_NEWLINE "path = "
"\"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"" PLATFORM_NEWLINE);
Memory::Free(ini);
delete iw;
delete ms;