@@ -85,7 +85,7 @@ TEST_F(ScriptReaderTest, ReadValidScript)
8585{
8686 ScriptReader reader;
8787 std::string content = reader.readScriptFile (valid_script_path_);
88- EXPECT_EQ (content, simple_script_.str () + " \n " );
88+ EXPECT_EQ (content, simple_script_.str ());
8989}
9090
9191TEST_F (ScriptReaderTest, ReadEmptyScript)
@@ -130,7 +130,7 @@ TEST_F(ScriptReaderTest, ReplaceIncludes)
130130 ofs_included.close ();
131131
132132 std::string processed_script = reader.readScriptFile (existing_script_file);
133- EXPECT_EQ (processed_script, " movej([1,2,3,4,5,6])\n " );
133+ EXPECT_EQ (processed_script, " movej([1,2,3,4,5,6])" );
134134
135135 std::remove (existing_script_file);
136136 std::remove (existing_include_file);
@@ -164,7 +164,7 @@ TEST_F(ScriptReaderTest, ReplaceVariables)
164164
165165 // By default std::to_string will convert double to 6 decimal places
166166 EXPECT_EQ (script, " movej([value1, 42, 6.280000, 0, 0, 0])\n local is_true = True\n local is_false = False\n This is "
167- " just a line without any replacement\n " );
167+ " just a line without any replacement" );
168168}
169169
170170TEST_F (ScriptReaderTest, VariableNotInDictThrowsError)
@@ -221,20 +221,20 @@ Please log in.
221221
222222 std::string script = reader.readScriptFile (existing_script_file, data);
223223
224- EXPECT_EQ (script, " Welcome back, test_user!\n " );
224+ EXPECT_EQ (script, " Welcome back, test_user!" );
225225
226226 data[" is_logged_in" ] = false ;
227227 data[" is_guest" ] = true ;
228228 script = reader.readScriptFile (existing_script_file, data);
229- EXPECT_EQ (script, " Welcome, test_user!\n " );
229+ EXPECT_EQ (script, " Welcome, test_user!" );
230230
231231 data[" username" ] = " " ;
232232 script = reader.readScriptFile (existing_script_file, data);
233- EXPECT_EQ (script, " Welcome, guest!\n " );
233+ EXPECT_EQ (script, " Welcome, guest!" );
234234
235235 data[" is_guest" ] = false ;
236236 script = reader.readScriptFile (existing_script_file, data);
237- EXPECT_EQ (script, " Please log in.\n " );
237+ EXPECT_EQ (script, " Please log in." );
238238}
239239
240240TEST_F (ScriptReaderTest, CheckCondition)
@@ -391,4 +391,51 @@ TEST_F(ScriptReaderTest, DataVariantOperators)
391391 EXPECT_THROW ((void )(data[" bool1" ] > data[" bool2" ]), std::invalid_argument);
392392 EXPECT_THROW (data[" str1" ] == data[" bool1" ], std::invalid_argument);
393393 EXPECT_THROW (data[" double1" ] == data[" str1" ], std::invalid_argument);
394+ }
395+
396+ TEST_F (ScriptReaderTest, ConditionalInclude)
397+ {
398+ ScriptReader reader;
399+
400+ char existing_script_file[] = " main_script.XXXXXX" ;
401+ std::ignore = mkstemp (existing_script_file);
402+ char existing_include_file[] = " included_script.XXXXXX" ;
403+ std::ignore = mkstemp (existing_include_file);
404+ std::ofstream ofs (existing_script_file);
405+ if (ofs.bad ())
406+ {
407+ std::cout << " Failed to create temporary files" << std::endl;
408+ GTEST_FAIL ();
409+ }
410+ ofs << " textmsg(\" This is a test script\" )" << std::endl;
411+ ofs << " {% if ROBOT_VERSION > 10.7 %}" << std::endl;
412+ ofs << " {% include '" << std::string (existing_include_file) << " ' %}" << std::endl;
413+ ofs << " {% endif %}" << std::endl;
414+ ofs.close ();
415+
416+ // Create a temporary included script
417+ std::ofstream ofs_included (existing_include_file);
418+ if (ofs_included.bad ())
419+ {
420+ std::cout << " Failed to create temporary files" << std::endl;
421+ GTEST_FAIL ();
422+ }
423+ ofs_included << " movej([1,2,3,4,5,6])" ;
424+ ofs_included.close ();
425+
426+ ScriptReader::DataDict data;
427+ data[" ROBOT_VERSION" ] = 10.8 ; // Set a version greater than 10.7 to include the script
428+
429+ std::string processed_script = reader.readScriptFile (existing_script_file, data);
430+ std::string expected_script = " textmsg(\" This is a test script\" )\n "
431+ " movej([1,2,3,4,5,6])" ;
432+ EXPECT_EQ (processed_script, expected_script);
433+
434+ data[" ROBOT_VERSION" ] = 10.6 ;
435+ processed_script = reader.readScriptFile (existing_script_file, data);
436+ expected_script = " textmsg(\" This is a test script\" )" ;
437+ EXPECT_EQ (processed_script, expected_script);
438+
439+ std::remove (existing_script_file);
440+ std::remove (existing_include_file);
394441}
0 commit comments