From 39618d25a1e70927aa480634eaa20d9952c9be02 Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 13 Nov 2019 08:24:51 -0600 Subject: [PATCH 1/2] Added .clang-format. Closes #43 --- .clang-format | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/main.cpp | 3 +- 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..ae28a6a --- /dev/null +++ b/.clang-format @@ -0,0 +1,115 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +RawStringFormats: + - Delimiter: pb + Language: TextProto + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... + diff --git a/test/main.cpp b/test/main.cpp index 8d9aa37..3dbb7cd 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -10,4 +10,5 @@ #include #include #include -#include \ No newline at end of file +#include +#include From c4256afd4b601302237ad5361cac90bdfcda49b9 Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 13 Nov 2019 08:25:07 -0600 Subject: [PATCH 2/2] Added test case for issue #37 --- test/test_issue_37.hpp | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/test_issue_37.hpp diff --git a/test/test_issue_37.hpp b/test/test_issue_37.hpp new file mode 100644 index 0000000..77db3b2 --- /dev/null +++ b/test/test_issue_37.hpp @@ -0,0 +1,43 @@ +#pragma once +#include +#include + +TEST_CASE("Issues with implicit values #37", "[implicit_values]") { + argparse::ArgumentParser m_bfm("test"); + m_bfm.add_argument("-l", "--load") + .help("load a VMM into the kernel"); + + m_bfm.add_argument("-u", "--unload") + .default_value(false) + .implicit_value(true) + .help("unload a previously loaded VMM"); + + m_bfm.add_argument("-x", "--start") + .default_value(false) + .implicit_value(true) + .help("start a previously loaded VMM"); + + m_bfm.add_argument("-s", "--stop") + .default_value(false) + .implicit_value(true) + .help("stop a previously started VMM"); + + m_bfm.add_argument("-d", "--dump") + .default_value(false) + .implicit_value(true) + .help("output the contents of the VMM's debug buffer"); + + m_bfm.add_argument("-m", "--mem") + .default_value(100) + .required() + .action([](const std::string &val) { return std::stoull(val); }) + .help("memory in MB to give the VMM when loading"); + m_bfm.parse_args({ "test", "-l", "blah", "-d", "-u" }); + + REQUIRE(m_bfm.get("--load") == "blah"); + REQUIRE(m_bfm.get("-l") == "blah"); + REQUIRE(m_bfm.get("-u") == true); + REQUIRE(m_bfm.get("-d") == true); + REQUIRE(m_bfm.get("-s") == false); + REQUIRE(m_bfm.get("--unload") == true); +}