You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.0 KiB
134 lines
4.0 KiB
include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
|
|
|
|
# No keywords that miss any values, _KEYWORDS_MISSING_VALUES should not be defined
|
|
cmake_parse_arguments(PREF "" "P1" "P2" P1 p1 P2 p2_a p2_b)
|
|
|
|
TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
|
|
# Keyword should even be deleted from the actual scope
|
|
set(PREF_KEYWORDS_MISSING_VALUES "What ever")
|
|
cmake_parse_arguments(PREF "" "" "")
|
|
|
|
TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
|
|
# Given missing keywords as only option
|
|
cmake_parse_arguments(PREF "" "P1" "P2" P1)
|
|
|
|
TEST(PREF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(PREF_P1 "UNDEFINED")
|
|
TEST(PREF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
|
|
# Mixed with unparsed arguments
|
|
cmake_parse_arguments(UPREF "" "P1" "P2" A B P2 C P1)
|
|
TEST(UPREF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(UPREF_UNPARSED_ARGUMENTS A B)
|
|
|
|
# one_value_keyword followed by option
|
|
cmake_parse_arguments(REF "OP" "P1" "" P1 OP)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_OP "TRUE")
|
|
|
|
# Counter Test
|
|
cmake_parse_arguments(REF "OP" "P1" "" P1 p1 OP)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_OP "TRUE")
|
|
|
|
# one_value_keyword followed by a one_value_keyword
|
|
cmake_parse_arguments(REF "" "P1;P2" "" P1 P2 p2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 "p2")
|
|
|
|
# Counter Test
|
|
cmake_parse_arguments(REF "" "P1;P2" "" P1 p1 P2 p2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 "p2")
|
|
|
|
# one_value_keyword followed by a multi_value_keywords
|
|
cmake_parse_arguments(REF "" "P1" "P2" P1 P2 p1 p2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 p1 p2)
|
|
|
|
# Counter Examples
|
|
cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2 p1 p2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 p1 p2)
|
|
|
|
# multi_value_keywords as only option
|
|
cmake_parse_arguments(REF "" "P1" "P2" P2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P2")
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 "UNDEFINED")
|
|
|
|
# multi_value_keywords followed by option
|
|
cmake_parse_arguments(REF "O1" "" "P1" P1 O1)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_O1 "TRUE")
|
|
|
|
# counter test
|
|
cmake_parse_arguments(REF "O1" "" "P1" P1 p1 p2 O1)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_P1 "p1;p2")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_O1 "TRUE")
|
|
|
|
# multi_value_keywords followed by one_value_keyword
|
|
cmake_parse_arguments(REF "" "P1" "P2" P2 P1 p1)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P2")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 "UNDEFINED")
|
|
|
|
# counter test
|
|
cmake_parse_arguments(REF "" "P1" "P2" P2 p2 P1 p1)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED")
|
|
TEST(REF_P2 "p2")
|
|
|
|
# one_value_keyword as last argument
|
|
cmake_parse_arguments(REF "" "P1" "P2" A P2 p2 P1)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P1")
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_UNPARSED_ARGUMENTS "A")
|
|
TEST(REF_P2 "p2")
|
|
|
|
# multi_value_keywords as last argument
|
|
cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "P2")
|
|
TEST(REF_P1 "p1")
|
|
TEST(REF_P2 "UNDEFINED")
|
|
|
|
# Multiple one_value_keyword and multi_value_keywords at different places
|
|
cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES P1 P2)
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_P2 "UNDEFINED")
|
|
|
|
# Duplicated missing keywords
|
|
cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2 P1 P2)
|
|
TEST(REF_KEYWORDS_MISSING_VALUES P1 P2)
|
|
TEST(REF_P1 "UNDEFINED")
|
|
TEST(REF_P2 "UNDEFINED")
|
|
|
|
# make sure keywords that are never used, don't get added to KEYWORDS_MISSING_VALUES
|
|
cmake_parse_arguments(REF "O1;O2" "P1" "P2")
|
|
TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED")
|
|
TEST(REF_O1 FALSE)
|
|
TEST(REF_O2 FALSE)
|
|
TEST(REF_P1 UNDEFINED)
|
|
TEST(REF_P2 UNDEFINED)
|