@@ -671,6 +671,35 @@ void include3() { // #16 - crash when expanding macro from header
671671}
672672
673673
674+ void include4 () { // #27 - -include
675+ const char code_c[] = " X\n " ;
676+ const char code_h[] = " #define X 123\n " ;
677+
678+ std::vector<std::string> files;
679+
680+ std::istringstream istr_c (code_c);
681+ simplecpp::TokenList rawtokens_c (istr_c, files, " 27.c" );
682+
683+ std::istringstream istr_h (code_h);
684+ simplecpp::TokenList rawtokens_h (istr_h, files, " 27.h" );
685+
686+ ASSERT_EQUALS (2U , files.size ());
687+ ASSERT_EQUALS (" 27.c" , files[0 ]);
688+ ASSERT_EQUALS (" 27.h" , files[1 ]);
689+
690+ std::map<std::string, simplecpp::TokenList *> filedata;
691+ filedata[" 27.c" ] = &rawtokens_c;
692+ filedata[" 27.h" ] = &rawtokens_h;
693+
694+ simplecpp::TokenList out (files);
695+ simplecpp::DUI dui;
696+ dui.includes .push_back (" 27.h" );
697+ simplecpp::preprocess (out, rawtokens_c, files, filedata, dui);
698+
699+ ASSERT_EQUALS (" 123" , out.stringify ());
700+ }
701+
702+
674703void readfile_string () {
675704 const char code[] = " A = \" abc\' def\" " ;
676705 ASSERT_EQUALS (" A = \" abc\' def\" " , readfile (code));
@@ -858,6 +887,7 @@ int main(int argc, char **argv) {
858887 TEST_CASE (include1);
859888 TEST_CASE (include2);
860889 TEST_CASE (include3);
890+ TEST_CASE (include4); // -include
861891
862892 TEST_CASE (readfile_string);
863893 TEST_CASE (readfile_rawstring);
0 commit comments