1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
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)
|