diff --git a/starboard/nplb/BUILD.gn b/starboard/nplb/BUILD.gn index 6f8577fe4af8..9e42544a8a68 100644 --- a/starboard/nplb/BUILD.gn +++ b/starboard/nplb/BUILD.gn @@ -135,6 +135,10 @@ target(gtest_target_type, "nplb") { "player_test_util.cc", "player_test_util.h", "player_write_sample_test.cc", + "posix_compliance/posix_string_compare_no_case_n_test.cc", + "posix_compliance/posix_string_compare_no_case_test.cc", + "posix_compliance/posix_string_format_test.cc", + "posix_compliance/posix_string_format_wide_test.cc", "random_helpers.cc", "recursive_mutex_test.cc", "rwlock_test.cc", diff --git a/starboard/nplb/posix_compliance/posix_string_compare_no_case_n_test.cc b/starboard/nplb/posix_compliance/posix_string_compare_no_case_n_test.cc new file mode 100644 index 000000000000..6b98cb4c6c40 --- /dev/null +++ b/starboard/nplb/posix_compliance/posix_string_compare_no_case_n_test.cc @@ -0,0 +1,61 @@ +// Copyright 2015 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "starboard/common/string.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace starboard { +namespace nplb { +namespace { + +#if SB_API_VERSION >= 16 +TEST(PosixCompareNoCaseNTest, SunnyDaySelf) { + const char kString[] = "0123456789"; + EXPECT_EQ(0, strncasecmp(kString, kString, strlen(kString))); + EXPECT_EQ(0, strncasecmp("", "", 0)); +} + +TEST(PosixCompareNoCaseNTest, SunnyDayEmptyLessThanNotEmpty) { + const char kString[] = "0123456789"; + EXPECT_GT(0, strncasecmp("", kString, strlen(kString))); +} + +TEST(PosixCompareNoCaseNTest, SunnyDayEmptyZeroNEqual) { + const char kString[] = "0123456789"; + EXPECT_EQ(0, strncasecmp("", kString, 0)); +} + +TEST(PosixCompareNoCaseNTest, SunnyDayBigN) { + const char kString[] = "0123456789"; + EXPECT_EQ(0, strncasecmp(kString, kString, strlen(kString) * 2)); +} + +TEST(PosixCompareNoCaseNTest, SunnyDayCase) { + const char kString1[] = "aBcDeFgHiJkLmNoPqRsTuVwXyZ"; + const char kString2[] = "AbCdEfGhIjKlMnOpQrStUvWxYz"; + EXPECT_EQ(0, strncasecmp(kString1, kString2, strlen(kString1))); + EXPECT_EQ(0, strncasecmp(kString2, kString1, strlen(kString2))); + + const char kString3[] = "aBcDeFgHiJkLmaBcDeFgHiJkLm"; + const char kString4[] = "AbCdEfGhIjKlMnOpQrStUvWxYz"; + EXPECT_GT(0, strncasecmp(kString3, kString4, strlen(kString3))); + EXPECT_LT(0, strncasecmp(kString4, kString3, strlen(kString4))); + EXPECT_EQ(0, strncasecmp(kString3, kString4, strlen(kString3) / 2)); + EXPECT_EQ(0, strncasecmp(kString4, kString3, strlen(kString4) / 2)); +} +#endif // SB_API_VERSION >= 16 + +} // namespace +} // namespace nplb +} // namespace starboard diff --git a/starboard/nplb/posix_compliance/posix_string_compare_no_case_test.cc b/starboard/nplb/posix_compliance/posix_string_compare_no_case_test.cc new file mode 100644 index 000000000000..1417a10bf693 --- /dev/null +++ b/starboard/nplb/posix_compliance/posix_string_compare_no_case_test.cc @@ -0,0 +1,43 @@ +// Copyright 2015 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "starboard/common/string.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace starboard { +namespace nplb { +namespace { + +#if SB_API_VERSION >= 16 +TEST(PosixCompareNoCaseTest, SunnyDaySelf) { + const char kString[] = "0123456789"; + EXPECT_EQ(0, strcasecmp(kString, kString)); + EXPECT_EQ(0, strcasecmp("", "")); +} + +TEST(PosixCompareNoCaseTest, SunnyDayEmptyLessThanNotEmpty) { + const char kString[] = "0123456789"; + EXPECT_GT(0, strcasecmp("", kString)); +} + +TEST(PosixCompareNoCaseTest, SunnyDayCase) { + const char kString1[] = "aBcDeFgHiJkLmNoPqRsTuVwXyZ"; + const char kString2[] = "AbCdEfGhIjKlMnOpQrStUvWxYz"; + EXPECT_EQ(0, strcasecmp(kString1, kString2)); + EXPECT_EQ(0, strcasecmp(kString2, kString1)); +} +#endif // SB_API_VERSION >= 16 +} // namespace +} // namespace nplb +} // namespace starboard diff --git a/starboard/nplb/posix_compliance/posix_string_format_test.cc b/starboard/nplb/posix_compliance/posix_string_format_test.cc new file mode 100644 index 000000000000..e1a793dc15c9 --- /dev/null +++ b/starboard/nplb/posix_compliance/posix_string_format_test.cc @@ -0,0 +1,50 @@ +// Copyright 2015 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Here we are not trying to do anything fancy, just to really sanity check that +// this is hooked up to something. +#if SB_API_VERSION >= 16 + +#include "starboard/common/string.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace starboard { +namespace nplb { +namespace { + +int Format(char* out_buffer, size_t buffer_size, const char* format, ...) { + va_list arguments; + va_start(arguments, format); + int result = vsnprintf(out_buffer, buffer_size, format, arguments); + va_end(arguments); + return result; +} + +TEST(PosixFormatTest, SunnyDay) { + const char kExpected[] = "a1b2c3test"; + char destination[1024] = {0}; + int result = Format(destination, SB_ARRAY_SIZE(destination), "a%db%dc%d%s", 1, + 2, 3, "test"); + size_t expected_length = strlen(kExpected); + EXPECT_EQ(expected_length, result); + for (size_t i = 0; i <= expected_length; ++i) { + EXPECT_EQ(kExpected[i], destination[i]); + } +} + +} // namespace +} // namespace nplb +} // namespace starboard + // +#endif // SB_API_VERSION >= 16 diff --git a/starboard/nplb/posix_compliance/posix_string_format_wide_test.cc b/starboard/nplb/posix_compliance/posix_string_format_wide_test.cc new file mode 100644 index 000000000000..1a6e39defc38 --- /dev/null +++ b/starboard/nplb/posix_compliance/posix_string_format_wide_test.cc @@ -0,0 +1,53 @@ +// Copyright 2015 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Here we are not trying to do anything fancy, just to really sanity check that +// this is hooked up to something. +#if SB_API_VERSION >= 16 + +#include "starboard/common/string.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace starboard { +namespace nplb { +namespace { + +int Format(wchar_t* out_buffer, + size_t buffer_size, + const wchar_t* format, + ...) { + va_list arguments; + va_start(arguments, format); + int result = vswprintf(out_buffer, buffer_size, format, arguments); + va_end(arguments); + return result; +} + +TEST(PosixFormatWideTest, SunnyDay) { + const wchar_t kExpected[] = L"a1b2c3test"; + wchar_t destination[1024] = {0}; + int result = Format(destination, SB_ARRAY_SIZE(destination), L"a%db%dc%d%s", + 1, 2, 3, "test"); + size_t expected_length = wcslen(kExpected); + EXPECT_EQ(expected_length, result); + for (size_t i = 0; i <= expected_length; ++i) { + EXPECT_EQ(kExpected[i], destination[i]); + } +} + +} // namespace +} // namespace nplb +} // namespace starboard + +#endif // SB_API_VERSION >= 16