@@ -115,7 +115,7 @@ namespace shellanything { namespace test
115115 ASSERT_EQ (" The quick ${color fox jumps over the lazy dog." , expanded);
116116 }
117117 // --------------------------------------------------------------------------------------------------
118- TEST_F (TestPropertyManager, testExpandRecursivePermutations )
118+ TEST_F (TestPropertyManager, testExpandPermutations )
119119 {
120120 PropertyManager & pmgr = PropertyManager::GetInstance ();
121121
@@ -213,6 +213,50 @@ namespace shellanything { namespace test
213213 ASSERT_EQ (" E.T. phone home" , expanded);
214214 }
215215 // --------------------------------------------------------------------------------------------------
216+ TEST_F (TestPropertyManager, testExpandRecursive1)
217+ {
218+ PropertyManager & pmgr = PropertyManager::GetInstance ();
219+
220+ pmgr.SetProperty (" text1" , " ${text2}" );
221+ pmgr.SetProperty (" text2" , " ${text3}" );
222+ pmgr.SetProperty (" text3" , " You're gonna need a bigger boat." );
223+
224+ // Property ${text1} should expand up to the expected movie quote.
225+ std::string expanded = pmgr.Expand (" ${text1}" );
226+
227+ // Assert the string was properly expanded.
228+ ASSERT_EQ (" You're gonna need a bigger boat." , expanded);
229+ }
230+ // --------------------------------------------------------------------------------------------------
231+ TEST_F (TestPropertyManager, testExpandRecursive2)
232+ {
233+ PropertyManager & pmgr = PropertyManager::GetInstance ();
234+
235+ pmgr.SetProperty (" varname" , " foo" );
236+ pmgr.SetProperty (" foo" , " ${quote}" );
237+ pmgr.SetProperty (" quote" , " Say 'hello' to my little friend!" );
238+
239+ // Property ${varname} should expand up to the expected movie quote.
240+ std::string expanded = pmgr.Expand (" ${${varname}}" );
241+
242+ // Assert the string was properly expanded.
243+ ASSERT_EQ (" Say 'hello' to my little friend!" , expanded);
244+ }
245+ // --------------------------------------------------------------------------------------------------
246+ TEST_F (TestPropertyManager, testExpandOnceDefault)
247+ {
248+ PropertyManager & pmgr = PropertyManager::GetInstance ();
249+
250+ pmgr.SetProperty (" varname" , " quote" );
251+ pmgr.SetProperty (" quote" , " Say 'hello' to my little friend!" );
252+
253+ // Property ${varname} should NOT expand up to the expected movie quote.
254+ std::string expanded = pmgr.ExpandOnce (" ${${varname}}" );
255+
256+ // Assert the string was properly expanded.
257+ ASSERT_EQ (" ${quote}" , expanded);
258+ }
259+ // --------------------------------------------------------------------------------------------------
216260 TEST_F (TestPropertyManager, testEnvironmentVariableProperty)
217261 {
218262 PropertyManager & pmgr = PropertyManager::GetInstance ();
0 commit comments