|  | @@ -3,7 +3,9 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <initializer_list>
 | 
	
		
			
				|  |  |  #include <iostream>
 | 
	
		
			
				|  |  | +#include <map>
 | 
	
		
			
				|  |  |  #include <string>
 | 
	
		
			
				|  |  | +#include <utility>
 | 
	
		
			
				|  |  |  #include <vector>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <cm/optional>
 | 
	
	
		
			
				|  | @@ -69,6 +71,11 @@ bool verifyResult(Result const& result,
 | 
	
		
			
				|  |  |    static std::vector<cm::string_view> const missing = { "STRING_1"_s,
 | 
	
		
			
				|  |  |                                                          "LIST_1"_s,
 | 
	
		
			
				|  |  |                                                          "LIST_4"_s };
 | 
	
		
			
				|  |  | +  static std::map<cm::string_view, std::string> const keywordErrors = {
 | 
	
		
			
				|  |  | +    { "STRING_1"_s, "  missing required value\n" },
 | 
	
		
			
				|  |  | +    { "LIST_1"_s, "  missing required value\n" },
 | 
	
		
			
				|  |  | +    { "LIST_4"_s, "  missing required value\n" }
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #define ASSERT_TRUE(x)                                                        \
 | 
	
		
			
				|  |  |    do {                                                                        \
 | 
	
	
		
			
				|  | @@ -78,7 +85,7 @@ bool verifyResult(Result const& result,
 | 
	
		
			
				|  |  |      }                                                                         \
 | 
	
		
			
				|  |  |    } while (false)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  ASSERT_TRUE(result);
 | 
	
		
			
				|  |  | +  ASSERT_TRUE(!result);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    ASSERT_TRUE(result.Option1);
 | 
	
		
			
				|  |  |    ASSERT_TRUE(!result.Option2);
 | 
	
	
		
			
				|  | @@ -112,6 +119,13 @@ bool verifyResult(Result const& result,
 | 
	
		
			
				|  |  |    ASSERT_TRUE(unparsedArguments[0] == "bar");
 | 
	
		
			
				|  |  |    ASSERT_TRUE(keywordsMissingValue == missing);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  ASSERT_TRUE(result.GetKeywordErrors().size() == keywordErrors.size());
 | 
	
		
			
				|  |  | +  for (auto const& ke : result.GetKeywordErrors()) {
 | 
	
		
			
				|  |  | +    auto const ki = keywordErrors.find(ke.first);
 | 
	
		
			
				|  |  | +    ASSERT_TRUE(ki != keywordErrors.end());
 | 
	
		
			
				|  |  | +    ASSERT_TRUE(ke.second == ki->second);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    return true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -179,7 +193,7 @@ bool testArgumentParserStaticBool()
 | 
	
		
			
				|  |  |    std::vector<cm::string_view> keywordsMissingValue;
 | 
	
		
			
				|  |  |    Result result;
 | 
	
		
			
				|  |  |    ASSERT_TRUE(parserStatic.Parse(result, args, &unparsedArguments,
 | 
	
		
			
				|  |  | -                                 &keywordsMissingValue) == true);
 | 
	
		
			
				|  |  | +                                 &keywordsMissingValue) == false);
 | 
	
		
			
				|  |  |    return verifyResult(result, unparsedArguments, keywordsMissingValue);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |