| cmake_minimum_required(VERSION 3.23) | |
| # TODO1: Implement MacroAppend | |
| macro(MacroAppend ListVar Value) | |
| endmacro() | |
| # TODO2: Call MacroAppend, then return the value from FuncAppend | |
| function(FuncAppend ListVar Value) | |
| endfunction() | |
| # Testing for the above, final expected value is "Alpha;Beta;Gamma;Delta" | |
| if(SKIP_TESTS) | |
| return() | |
| endif() | |
| set(Original "Beta;Gamma") | |
| set(Expected "Alpha;Beta;Gamma;Delta") | |
| set(BeginList ${Original}) | |
| set(EndList "Alpha") | |
| MacroAppend(BeginList "Delta") | |
| foreach(value IN LISTS BeginList) | |
| MacroAppend(EndList ${value}) | |
| endforeach() | |
| if(BeginList STREQUAL Original) | |
| message("MacroAppend unimplemented or did nothing") | |
| elseif(NOT EndList STREQUAL Expected) | |
| message(WARNING "MacroAppend error, final value: ${EndList}") | |
| else() | |
| message("MacroAppend correct") | |
| endif() | |
| set(BeginList ${Original}) | |
| set(EndList "Alpha") | |
| FuncAppend(BeginList "Delta") | |
| foreach(value IN LISTS BeginList) | |
| FuncAppend(EndList ${value}) | |
| endforeach() | |
| if(BeginList STREQUAL Original) | |
| message("FuncAppend unimplemented or did nothing") | |
| elseif(NOT EndList STREQUAL Expected) | |
| message(WARNING "FuncAppend error, final value: ${EndList}") | |
| else() | |
| message("FuncAppend correct") | |
| endif() | |
| # Bonus Tests | |
| FuncAppend(UndefinedList "Test") | |
| set(EmptyList "") | |
| FuncAppend(EmptyList "Test") | |
| set(FalseList "False") | |
| FuncAppend(FalseList "Test") | |
| if( | |
| (UndefinedList STREQUAL "Test") AND | |
| (EmptyList STREQUAL "Test") AND | |
| (FalseList STREQUAL "False;Test") | |
| ) | |
| message("You implemented the empty list case, well done!") | |
| endif() |