Differential D2456 Diff 11039 ps/trunk/source/third_party/ogre3d_preprocessor/tests/test_Preprocessor.h
Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/third_party/ogre3d_preprocessor/tests/test_Preprocessor.h
/* Copyright (C) 2019 Wildfire Games. | /* Copyright (C) 2020 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
Show All 10 Lines | |||||
#include "graphics/PreprocessorWrapper.h" | #include "graphics/PreprocessorWrapper.h" | ||||
#include "third_party/ogre3d_preprocessor/OgreGLSLPreprocessor.h" | #include "third_party/ogre3d_preprocessor/OgreGLSLPreprocessor.h" | ||||
class TestPreprocessor : public CxxTest::TestSuite | class TestPreprocessor : public CxxTest::TestSuite | ||||
{ | { | ||||
public: | public: | ||||
void setUp() | void setUp() | ||||
{ | { | ||||
CPreprocessor::ErrorHandler = CPreprocessorWrapper::PyrogenesisShaderError; | Ogre::CPreprocessor::ErrorHandler = CPreprocessorWrapper::PyrogenesisShaderError; | ||||
} | } | ||||
void test_basic() | void test_basic() | ||||
{ | { | ||||
CPreprocessor preproc; | Ogre::CPreprocessor preproc; | ||||
const char* in = "#define TEST 2\n1+1=TEST\n"; | const char* in = "#define TEST 2\n1+1=TEST\n"; | ||||
size_t len = 0; | size_t len = 0; | ||||
char* out = preproc.Parse(in, strlen(in), len); | char* out = preproc.Parse(in, strlen(in), len); | ||||
TS_ASSERT_EQUALS(std::string(out, len), "\n1+1=2\n"); | TS_ASSERT_EQUALS(std::string(out, len), "\n1+1=2\n"); | ||||
// Free output if it's not inside the source string | // Free output if it's not inside the source string | ||||
if (!(out >= in && out < in + strlen(in))) | if (!(out >= in && out < in + strlen(in))) | ||||
free(out); | free(out); | ||||
} | } | ||||
void test_error() | void test_error() | ||||
{ | { | ||||
TestLogger logger; | TestLogger logger; | ||||
CPreprocessor preproc; | Ogre::CPreprocessor preproc; | ||||
const char* in = "foo\n#if ()\nbar\n"; | const char* in = "foo\n#if ()\nbar\n"; | ||||
size_t len = 0; | size_t len = 0; | ||||
char* out = preproc.Parse(in, strlen(in), len); | char* out = preproc.Parse(in, strlen(in), len); | ||||
TS_ASSERT_EQUALS(std::string(out, len), ""); | TS_ASSERT_EQUALS(std::string(out, len), ""); | ||||
TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "ERROR: Preprocessor error: line 2: Unclosed parenthesis in #if expression\n"); | TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "ERROR: Preprocessor error: line 2: Unclosed parenthesis in #if expression\n"); | ||||
// Free output if it's not inside the source string | // Free output if it's not inside the source string | ||||
if (!(out >= in && out < in + strlen(in))) | if (!(out >= in && out < in + strlen(in))) | ||||
free(out); | free(out); | ||||
} | } | ||||
}; | }; |
Wildfire Games · Phabricator