mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-04 17:35:43 +00:00
PresetFileParser: Fix line reader and a compiler warning, re-add tests.
Don't skip lines with no data after "=", as there are many presets with empty code lines. skipping it would create a gap in the line numbers, aborting the loop in GetCode() early.
This commit is contained in:
@ -1,2 +1,2 @@
|
||||
add_subdirectory(libprojectM)
|
||||
add_subdirectory(playlist)
|
||||
add_subdirectory(playlist)
|
||||
|
||||
@ -1,333 +0,0 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <MilkdropPresetFactory/FileParser.hpp>
|
||||
|
||||
static constexpr auto fileParserTestDataPath{ PROJECTM_TEST_DATA_DIR "/FileParser/" };
|
||||
|
||||
/**
|
||||
* Class to make protected function accessible to tests.
|
||||
*/
|
||||
class FileParserMock : public FileParser
|
||||
{
|
||||
public:
|
||||
static void StripComment(std::string& line)
|
||||
{
|
||||
FileParser::StripComment(line);
|
||||
}
|
||||
|
||||
static void StripMultilineComment(std::string& code)
|
||||
{
|
||||
FileParser::StripMultilineComment(code);
|
||||
}
|
||||
|
||||
static void Trim(std::string& line)
|
||||
{
|
||||
FileParser::Trim(line);
|
||||
}
|
||||
};
|
||||
|
||||
TEST(FileParser, ReadEmptyFile)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_FALSE(parser.Read(std::string(fileParserTestDataPath) + "parser-empty.milk"));
|
||||
}
|
||||
|
||||
TEST(FileParser, ReadFileWithNullByte)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_FALSE(parser.Read(std::string(fileParserTestDataPath) + "parser-nullbyte.milk"));
|
||||
}
|
||||
|
||||
TEST(FileParser, ReadSimpleFile)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
}
|
||||
|
||||
TEST(FileParser, GetRawPresetValues)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
EXPECT_FALSE(values.empty());
|
||||
}
|
||||
|
||||
TEST(FileParser, EmptyValue)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty values should be stored as such
|
||||
ASSERT_FALSE(values.find("empty_value") == values.end());
|
||||
EXPECT_EQ(values.at("empty_value"), "");
|
||||
}
|
||||
|
||||
TEST(FileParser, EmptyKey)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty key should be ignored
|
||||
ASSERT_TRUE(values.find("value_with_space") != values.end());
|
||||
EXPECT_EQ(values.at("value_with_space"), "123");
|
||||
}
|
||||
|
||||
TEST(FileParser, ValueWithSpaceDelimiter)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty key should be ignored
|
||||
EXPECT_TRUE(values.find("empty_key") == values.end());
|
||||
}
|
||||
|
||||
TEST(FileParser, ReadFileWithRepeatedKey)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-repeatedkey.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
ASSERT_TRUE(values.find("warp") != values.end());
|
||||
EXPECT_EQ(values.at("warp"), "0");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCode)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_");
|
||||
EXPECT_EQ(code, "r=1.0; g=1.0; b=1.0; ");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCodeWithGap)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_gap_");
|
||||
EXPECT_EQ(code, "r=1.0; g=1.0; ");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCodeWithRepeatedLine)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_repeat_");
|
||||
EXPECT_EQ(code, "r=1.0; g=1.0; b=1.0; ");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCodeTrimmed)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_trim_");
|
||||
EXPECT_EQ(code, "r = 1.0; g = 1.0; b = 1.0; ");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCodeMultilineComment)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("multiline_comment_");
|
||||
EXPECT_EQ(code, "r = 1.0; b = 1.0; ");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetCodeShaderSyntax)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("warp_");
|
||||
EXPECT_EQ(code, "r=1.0;\ng=1.0;\nb=1.0;\n");
|
||||
}
|
||||
|
||||
TEST(FileParser, GetIntValid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("nVideoEchoOrientation", 0), 3);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetIntInvalid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("nSomeWeirdStuff", 123), 123);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetIntDefault)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("RandomKey", 123), 123);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetFloatValid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("fVideoEchoAlpha", 0), 0.5f);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetFloatInvalid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("fSomeWeirdStuff", 123.0f), 123.0f);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetFloatDefault)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("RandomKey", 123.0f), 123.0f);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetBooleanValid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("bAdditiveWaves", false), true);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetBooleanInvalid)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("bSomeWeirdStuff", true), true);
|
||||
}
|
||||
|
||||
TEST(FileParser, GetBooleanDefault)
|
||||
{
|
||||
FileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("RandomKey", true), true);
|
||||
}
|
||||
|
||||
TEST(FileParser, StripCommentBegin)
|
||||
{
|
||||
std::string line{ "// Full line comment" };
|
||||
FileParserMock::StripComment(line);
|
||||
ASSERT_EQ(line, "");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripCommentLeadingWhitespace)
|
||||
{
|
||||
std::string line{ " // Full line comment" };
|
||||
FileParserMock::StripComment(line);
|
||||
ASSERT_EQ(line, " ");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripCommentLeadingText)
|
||||
{
|
||||
std::string line{ "1.005// Some value" };
|
||||
FileParserMock::StripComment(line);
|
||||
ASSERT_EQ(line, "1.005");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripCommentEmptyComment)
|
||||
{
|
||||
std::string line{ "1.005//" };
|
||||
FileParserMock::StripComment(line);
|
||||
ASSERT_EQ(line, "1.005");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentOnlyComment)
|
||||
{
|
||||
std::string code{ "/* Full line comment */" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentMiddleComment)
|
||||
{
|
||||
std::string code{ "Some /* Middle line comment */ Text" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "Some Text");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentMultipleComments)
|
||||
{
|
||||
std::string code{ "Some /* Middle */ More /* line */ Nice /* comment */ Text" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "Some More Nice Text");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentWithLinebreak)
|
||||
{
|
||||
// Mot really a usecase as newlines are stripped, but should work.
|
||||
std::string code{ "/* Multi\nline\ncomment */" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentWithWrongTerminatorBeginning)
|
||||
{
|
||||
std::string code{ "*/ Text /* Comment with termination in front" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "*/ Text ");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentWithWrongTerminatorEnd)
|
||||
{
|
||||
std::string code{ "Text /* Comment with two terminators */ */" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "Text */");
|
||||
}
|
||||
|
||||
TEST(FileParser, StripMultiLineCommentWithoutTerminator)
|
||||
{
|
||||
std::string code{ "Text /* Comment without termination" };
|
||||
FileParserMock::StripMultilineComment(code);
|
||||
ASSERT_EQ(code, "Text ");
|
||||
}
|
||||
|
||||
TEST(FileParser, TrimFront)
|
||||
{
|
||||
std::string line{ " TEXT TEXT" };
|
||||
FileParserMock::Trim(line);
|
||||
ASSERT_EQ(line, "TEXT TEXT");
|
||||
}
|
||||
|
||||
TEST(FileParser, TrimBack)
|
||||
{
|
||||
std::string line{ "TEXT TEXT " };
|
||||
FileParserMock::Trim(line);
|
||||
ASSERT_EQ(line, "TEXT TEXT");
|
||||
}
|
||||
|
||||
TEST(FileParser, TrimBoth)
|
||||
{
|
||||
std::string line{ " TEXT TEXT " };
|
||||
FileParserMock::Trim(line);
|
||||
ASSERT_EQ(line, "TEXT TEXT");
|
||||
}
|
||||
|
||||
TEST(FileParser, TrimOtherWhitespace)
|
||||
{
|
||||
std::string line{ "\t \v TEXT TEXT \r \n \f" };
|
||||
FileParserMock::Trim(line);
|
||||
ASSERT_EQ(line, "TEXT TEXT");
|
||||
}
|
||||
Binary file not shown.
@ -2,6 +2,7 @@ find_package(GTest 1.10 REQUIRED NO_MODULE)
|
||||
|
||||
add_executable(projectM-unittest
|
||||
PCMTest.cpp
|
||||
PresetFileParserTest.cpp
|
||||
|
||||
$<TARGET_OBJECTS:MilkdropPreset>
|
||||
$<TARGET_OBJECTS:Renderer>
|
||||
|
||||
204
tests/libprojectM/PresetFileParserTest.cpp
Normal file
204
tests/libprojectM/PresetFileParserTest.cpp
Normal file
@ -0,0 +1,204 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <MilkdropPreset/PresetFileParser.hpp>
|
||||
|
||||
static constexpr auto fileParserTestDataPath{ PROJECTM_TEST_DATA_DIR "/PresetFileParser/" };
|
||||
|
||||
/**
|
||||
* Class to make protected function accessible to tests.
|
||||
*/
|
||||
class PresetFileParserMock : public PresetFileParser
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
TEST(PresetFileParser, ReadEmptyFile)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_FALSE(parser.Read(std::string(fileParserTestDataPath) + "parser-empty.milk"));
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, ReadFileWithNullByte)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_FALSE(parser.Read(std::string(fileParserTestDataPath) + "parser-nullbyte.milk"));
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, ReadSimpleFile)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetRawPresetValues)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
EXPECT_FALSE(values.empty());
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, EmptyValue)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty values should be stored as such
|
||||
ASSERT_FALSE(values.find("empty_value") == values.end());
|
||||
EXPECT_EQ(values.at("empty_value"), "");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, EmptyKey)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty key should be ignored
|
||||
ASSERT_TRUE(values.find("value_with_space") != values.end());
|
||||
EXPECT_EQ(values.at("value_with_space"), "123");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, ValueWithSpaceDelimiter)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-simple.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
// Lines with empty key should be ignored
|
||||
EXPECT_TRUE(values.find("empty_key") == values.end());
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, ReadFileWithRepeatedKey)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-repeatedkey.milk"));
|
||||
|
||||
const auto& values = parser.PresetValues();
|
||||
|
||||
ASSERT_TRUE(values.find("warp") != values.end());
|
||||
EXPECT_EQ(values.at("warp"), "0");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetCode)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_");
|
||||
EXPECT_EQ(code, "r=1.0;\ng=1.0;\n\nb=1.0;\n");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetCodeWithGap)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_gap_");
|
||||
EXPECT_EQ(code, "r=1.0;\ng=1.0;\n");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetCodeWithRepeatedLine)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("per_frame_repeat_");
|
||||
EXPECT_EQ(code, "r=1.0;\ng=1.0;\nb=1.0;\n");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetCodeMultilineComment)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("multiline_comment_");
|
||||
EXPECT_EQ(code, "r = 1.0; /* Comment...\ng = 1.0;\n... ends here */b = 1.0;\n");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetCodeShaderSyntax)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-code.milk"));
|
||||
|
||||
auto code = parser.GetCode("warp_");
|
||||
EXPECT_EQ(code, "r=1.0;\ng=1.0;\nb=1.0;\n");
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetIntValid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("nVideoEchoOrientation", 0), 3);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetIntInvalid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("nSomeWeirdStuff", 123), 123);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetIntDefault)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetInt("RandomKey", 123), 123);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetFloatValid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("fVideoEchoAlpha", 0), 0.5f);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetFloatInvalid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("fSomeWeirdStuff", 123.0f), 123.0f);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetFloatDefault)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_FLOAT_EQ(parser.GetFloat("RandomKey", 123.0f), 123.0f);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetBooleanValid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("bAdditiveWaves", false), true);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetBooleanInvalid)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("bSomeWeirdStuff", true), true);
|
||||
}
|
||||
|
||||
TEST(PresetFileParser, GetBooleanDefault)
|
||||
{
|
||||
PresetFileParser parser;
|
||||
ASSERT_TRUE(parser.Read(std::string(fileParserTestDataPath) + "parser-valueconversion.milk"));
|
||||
|
||||
EXPECT_EQ(parser.GetBool("RandomKey", true), true);
|
||||
}
|
||||
BIN
tests/libprojectM/data/PresetFileParser/parser-nullbyte.milk
Normal file
BIN
tests/libprojectM/data/PresetFileParser/parser-nullbyte.milk
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Some simple assignments, with empty key or value and a space instead of an equal sign.
|
||||
[preset00]
|
||||
warp=0
|
||||
empty_value=
|
||||
=empty_key
|
||||
value_with_space 123
|
||||
// Some simple assignments, with empty key or value and a space instead of an equal sign.
|
||||
[preset00]
|
||||
warp=0
|
||||
empty_value=
|
||||
=empty_key
|
||||
value_with_space 123
|
||||
// No newline at end of file!
|
||||
Reference in New Issue
Block a user