aboutsummaryrefslogtreecommitdiffstats
path: root/brillo/flag_helper_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'brillo/flag_helper_test.cc')
-rw-r--r--brillo/flag_helper_test.cc117
1 files changed, 91 insertions, 26 deletions
diff --git a/brillo/flag_helper_test.cc b/brillo/flag_helper_test.cc
index 29c6429..7c7164d 100644
--- a/brillo/flag_helper_test.cc
+++ b/brillo/flag_helper_test.cc
@@ -8,6 +8,7 @@
#include <base/command_line.h>
#include <base/macros.h>
+#include <base/stl_util.h>
#include <brillo/flag_helper.h>
#include <gtest/gtest.h>
@@ -29,6 +30,8 @@ TEST_F(FlagHelperTest, Defaults) {
DEFINE_int32(int32_1, INT32_MIN, "Test int32 flag");
DEFINE_int32(int32_2, 0, "Test int32 flag");
DEFINE_int32(int32_3, INT32_MAX, "Test int32 flag");
+ DEFINE_uint32(uint32_1, 0, "Test uint32 flag");
+ DEFINE_uint32(uint32_2, UINT32_MAX, "Test uint32 flag");
DEFINE_int64(int64_1, INT64_MIN, "Test int64 flag");
DEFINE_int64(int64_2, 0, "Test int64 flag");
DEFINE_int64(int64_3, INT64_MAX, "Test int64 flag");
@@ -41,17 +44,19 @@ TEST_F(FlagHelperTest, Defaults) {
DEFINE_string(string_2, "value", "Test string flag");
const char* argv[] = {"test_program"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestDefaultTrue");
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestDefaultTrue");
EXPECT_TRUE(FLAGS_bool1);
EXPECT_FALSE(FLAGS_bool2);
EXPECT_EQ(FLAGS_int32_1, INT32_MIN);
EXPECT_EQ(FLAGS_int32_2, 0);
EXPECT_EQ(FLAGS_int32_3, INT32_MAX);
+ EXPECT_EQ(FLAGS_uint32_1, 0);
+ EXPECT_EQ(FLAGS_uint32_2, UINT32_MAX);
EXPECT_EQ(FLAGS_int64_1, INT64_MIN);
EXPECT_EQ(FLAGS_int64_2, 0);
EXPECT_EQ(FLAGS_int64_3, INT64_MAX);
@@ -74,6 +79,8 @@ TEST_F(FlagHelperTest, SetValueDoubleDash) {
DEFINE_int32(int32_1, 1, "Test int32 flag");
DEFINE_int32(int32_2, 1, "Test int32 flag");
DEFINE_int32(int32_3, 1, "Test int32 flag");
+ DEFINE_uint32(uint32_1, 1, "Test uint32 flag");
+ DEFINE_uint32(uint32_2, 1, "Test uint32 flag");
DEFINE_int64(int64_1, 1, "Test int64 flag");
DEFINE_int64(int64_2, 1, "Test int64 flag");
DEFINE_int64(int64_3, 1, "Test int64 flag");
@@ -93,6 +100,8 @@ TEST_F(FlagHelperTest, SetValueDoubleDash) {
"--int32_1=-2147483648",
"--int32_2=0",
"--int32_3=2147483647",
+ "--uint32_1=0",
+ "--uint32_2=4294967295",
"--int64_1=-9223372036854775808",
"--int64_2=0",
"--int64_3=9223372036854775807",
@@ -103,11 +112,11 @@ TEST_F(FlagHelperTest, SetValueDoubleDash) {
"--double_3=100.5",
"--string_1=",
"--string_2=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestDefaultTrue");
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestDefaultTrue");
EXPECT_TRUE(FLAGS_bool1);
EXPECT_FALSE(FLAGS_bool2);
@@ -116,6 +125,8 @@ TEST_F(FlagHelperTest, SetValueDoubleDash) {
EXPECT_EQ(FLAGS_int32_1, INT32_MIN);
EXPECT_EQ(FLAGS_int32_2, 0);
EXPECT_EQ(FLAGS_int32_3, INT32_MAX);
+ EXPECT_EQ(FLAGS_uint32_1, 0);
+ EXPECT_EQ(FLAGS_uint32_2, UINT32_MAX);
EXPECT_EQ(FLAGS_int64_1, INT64_MIN);
EXPECT_EQ(FLAGS_int64_2, 0);
EXPECT_EQ(FLAGS_int64_3, INT64_MAX);
@@ -136,6 +147,8 @@ TEST_F(FlagHelperTest, SetValueSingleDash) {
DEFINE_int32(int32_1, 1, "Test int32 flag");
DEFINE_int32(int32_2, 1, "Test int32 flag");
DEFINE_int32(int32_3, 1, "Test int32 flag");
+ DEFINE_uint64(uint32_1, 1, "Test uint32 flag");
+ DEFINE_uint64(uint32_2, 1, "Test uint32 flag");
DEFINE_int64(int64_1, 1, "Test int64 flag");
DEFINE_int64(int64_2, 1, "Test int64 flag");
DEFINE_int64(int64_3, 1, "Test int64 flag");
@@ -153,6 +166,8 @@ TEST_F(FlagHelperTest, SetValueSingleDash) {
"-int32_1=-2147483648",
"-int32_2=0",
"-int32_3=2147483647",
+ "-uint32_1=0",
+ "-uint32_2=4294967295",
"-int64_1=-9223372036854775808",
"-int64_2=0",
"-int64_3=9223372036854775807",
@@ -163,17 +178,19 @@ TEST_F(FlagHelperTest, SetValueSingleDash) {
"-double_3=100.5",
"-string_1=",
"-string_2=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestDefaultTrue");
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestDefaultTrue");
EXPECT_TRUE(FLAGS_bool1);
EXPECT_FALSE(FLAGS_bool2);
EXPECT_EQ(FLAGS_int32_1, INT32_MIN);
EXPECT_EQ(FLAGS_int32_2, 0);
EXPECT_EQ(FLAGS_int32_3, INT32_MAX);
+ EXPECT_EQ(FLAGS_uint32_1, 0);
+ EXPECT_EQ(FLAGS_uint32_2, UINT32_MAX);
EXPECT_EQ(FLAGS_int64_1, INT64_MIN);
EXPECT_EQ(FLAGS_int64_2, 0);
EXPECT_EQ(FLAGS_int64_3, INT64_MAX);
@@ -192,11 +209,11 @@ TEST_F(FlagHelperTest, DuplicateSetValue) {
DEFINE_int32(int32_1, 0, "Test in32 flag");
const char* argv[] = {"test_program", "--int32_1=5", "--int32_1=10"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestDuplicateSetvalue");
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestDuplicateSetvalue");
EXPECT_EQ(FLAGS_int32_1, 10);
}
@@ -206,11 +223,11 @@ TEST_F(FlagHelperTest, FlagTerminator) {
DEFINE_int32(int32_1, 0, "Test int32 flag");
const char* argv[] = {"test_program", "--int32_1=5", "--", "--int32_1=10"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestFlagTerminator");
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestFlagTerminator");
EXPECT_EQ(FLAGS_int32_1, 5);
}
@@ -220,13 +237,14 @@ TEST_F(FlagHelperTest, FlagTerminator) {
TEST_F(FlagHelperTest, HelpMessage) {
DEFINE_bool(bool_1, true, "Test bool flag");
DEFINE_int32(int_1, 0, "Test int flag");
+ DEFINE_uint32(uint32_1, 0, "Test uint32 flag");
DEFINE_int64(int64_1, 0, "Test int64 flag");
DEFINE_uint64(uint64_1, 0, "Test uint64 flag");
DEFINE_double(double_1, 0, "Test double flag");
DEFINE_string(string_1, "", "Test string flag");
const char* argv[] = {"test_program", "--int_1=value", "--help"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -235,7 +253,7 @@ TEST_F(FlagHelperTest, HelpMessage) {
stdout = stderr;
ASSERT_EXIT(
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestHelpMessage"),
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestHelpMessage"),
::testing::ExitedWithCode(EX_OK),
"TestHelpMessage\n\n"
" --bool_1 \\(Test bool flag\\) type: bool default: true\n"
@@ -244,6 +262,7 @@ TEST_F(FlagHelperTest, HelpMessage) {
" --int64_1 \\(Test int64 flag\\) type: int64 default: 0\n"
" --int_1 \\(Test int flag\\) type: int default: 0\n"
" --string_1 \\(Test string flag\\) type: string default: \"\"\n"
+ " --uint32_1 \\(Test uint32 flag\\) type: uint32 default: 0\n"
" --uint64_1 \\(Test uint64 flag\\) type: uint64 default: 0\n");
stdout = orig;
@@ -253,7 +272,7 @@ TEST_F(FlagHelperTest, HelpMessage) {
// to exit with EX_USAGE error code and corresponding error message.
TEST_F(FlagHelperTest, UnknownFlag) {
const char* argv[] = {"test_program", "--flag=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -261,7 +280,7 @@ TEST_F(FlagHelperTest, UnknownFlag) {
FILE* orig = stdout;
stdout = stderr;
- ASSERT_EXIT(brillo::FlagHelper::Init(arraysize(argv), argv, "TestIntExit"),
+ ASSERT_EXIT(brillo::FlagHelper::Init(base::size(argv), argv, "TestIntExit"),
::testing::ExitedWithCode(EX_USAGE),
"ERROR: unknown command line flag 'flag'");
@@ -274,7 +293,7 @@ TEST_F(FlagHelperTest, BoolParseError) {
DEFINE_bool(bool_1, 0, "Test bool flag");
const char* argv[] = {"test_program", "--bool_1=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -283,7 +302,7 @@ TEST_F(FlagHelperTest, BoolParseError) {
stdout = stderr;
ASSERT_EXIT(
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestBoolParseError"),
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestBoolParseError"),
::testing::ExitedWithCode(EX_DATAERR),
"ERROR: illegal value 'value' specified for bool flag 'bool_1'");
@@ -296,7 +315,7 @@ TEST_F(FlagHelperTest, Int32ParseError) {
DEFINE_int32(int_1, 0, "Test int flag");
const char* argv[] = {"test_program", "--int_1=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -304,11 +323,57 @@ TEST_F(FlagHelperTest, Int32ParseError) {
FILE* orig = stdout;
stdout = stderr;
- ASSERT_EXIT(brillo::FlagHelper::Init(arraysize(argv),
- argv,
- "TestInt32ParseError"),
- ::testing::ExitedWithCode(EX_DATAERR),
- "ERROR: illegal value 'value' specified for int flag 'int_1'");
+ ASSERT_EXIT(
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestInt32ParseError"),
+ ::testing::ExitedWithCode(EX_DATAERR),
+ "ERROR: illegal value 'value' specified for int flag 'int_1'");
+
+ stdout = orig;
+}
+
+// Test that when passing an incorrect/unparsable type to a command line flag,
+// the program exits with code EX_DATAERR and outputs a corresponding message.
+TEST_F(FlagHelperTest, Uint32ParseErrorUppperBound) {
+ DEFINE_uint32(uint32_1, 0, "Test uint32 flag");
+
+ // test with UINT32_MAX + 1
+ const char* argv[] = {"test_program", "--uint32_1=4294967296"};
+ base::CommandLine command_line(base::size(argv), argv);
+
+ brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
+ &command_line);
+
+ FILE* orig = stdout;
+ stdout = stderr;
+
+ ASSERT_EXIT(
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestUint32ParseError"),
+ ::testing::ExitedWithCode(EX_DATAERR),
+ "ERROR: illegal value '4294967296' specified for uint32 flag "
+ "'uint32_1'");
+
+ stdout = orig;
+}
+
+// Test that when passing an incorrect/unparsable type to a command line flag,
+// the program exits with code EX_DATAERR and outputs a corresponding message.
+TEST_F(FlagHelperTest, Uint32ParseErrorNegativeValue) {
+ DEFINE_uint32(uint32_1, 0, "Test uint32 flag");
+
+ const char* argv[] = {"test_program", "--uint32_1=-1"};
+ base::CommandLine command_line(base::size(argv), argv);
+
+ brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
+ &command_line);
+
+ FILE* orig = stdout;
+ stdout = stderr;
+
+ ASSERT_EXIT(
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestUint32ParseError"),
+ ::testing::ExitedWithCode(EX_DATAERR),
+ "ERROR: illegal value '-1' specified for uint32 flag "
+ "'uint32_1'");
stdout = orig;
}
@@ -319,7 +384,7 @@ TEST_F(FlagHelperTest, Int64ParseError) {
DEFINE_int64(int64_1, 0, "Test int64 flag");
const char* argv[] = {"test_program", "--int64_1=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -328,7 +393,7 @@ TEST_F(FlagHelperTest, Int64ParseError) {
stdout = stderr;
ASSERT_EXIT(
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestInt64ParseError"),
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestInt64ParseError"),
::testing::ExitedWithCode(EX_DATAERR),
"ERROR: illegal value 'value' specified for int64 flag "
"'int64_1'");
@@ -342,7 +407,7 @@ TEST_F(FlagHelperTest, UInt64ParseError) {
DEFINE_uint64(uint64_1, 0, "Test uint64 flag");
const char* argv[] = {"test_program", "--uint64_1=value"};
- base::CommandLine command_line(arraysize(argv), argv);
+ base::CommandLine command_line(base::size(argv), argv);
brillo::FlagHelper::GetInstance()->set_command_line_for_testing(
&command_line);
@@ -351,7 +416,7 @@ TEST_F(FlagHelperTest, UInt64ParseError) {
stdout = stderr;
ASSERT_EXIT(
- brillo::FlagHelper::Init(arraysize(argv), argv, "TestUInt64ParseError"),
+ brillo::FlagHelper::Init(base::size(argv), argv, "TestUInt64ParseError"),
::testing::ExitedWithCode(EX_DATAERR),
"ERROR: illegal value 'value' specified for uint64 flag "
"'uint64_1'");