summaryrefslogtreecommitdiff
path: root/tests/stdlib_test.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-04-04 17:34:04 -0700
committerElliott Hughes <enh@google.com>2016-04-04 17:34:04 -0700
commitdf143f8576afb0446794d4ccb1fb02aed196c82a (patch)
tree098728b018b7869bd8952e3e39894df3280808bc /tests/stdlib_test.cpp
parent2678c90f7d98a962badfe4bb736a26fb21485c7e (diff)
Add POSIX getsubopt(3).
Bug: http://b/27952303 Change-Id: I8a816477545dadcbd5c055714e76263574446b6f
Diffstat (limited to 'tests/stdlib_test.cpp')
-rw-r--r--tests/stdlib_test.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index 6ae6cda74..05438eb17 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -514,3 +514,26 @@ TEST(stdlib, strtoull_EINVAL) {
strtoull("123", NULL, 37);
ASSERT_EQ(EINVAL, errno);
}
+
+TEST(stdlib, getsubopt) {
+ char* const tokens[] = {
+ const_cast<char*>("a"),
+ const_cast<char*>("b"),
+ const_cast<char*>("foo"),
+ nullptr
+ };
+ std::string input = "a,b,foo=bar,a,unknown";
+ char* subopts = &input[0];
+ char* value = nullptr;
+
+ ASSERT_EQ(0, getsubopt(&subopts, tokens, &value));
+ ASSERT_EQ(nullptr, value);
+ ASSERT_EQ(1, getsubopt(&subopts, tokens, &value));
+ ASSERT_EQ(nullptr, value);
+ ASSERT_EQ(2, getsubopt(&subopts, tokens, &value));
+ ASSERT_STREQ("bar", value);
+ ASSERT_EQ(0, getsubopt(&subopts, tokens, &value));
+ ASSERT_EQ(nullptr, value);
+
+ ASSERT_EQ(-1, getsubopt(&subopts, tokens, &value));
+}