The 1st of the 2-patch series adds sources with original Bionic license - https://github.com/cloudius-systems/osv/blob/master/tests/tst-ctype.cc. And the second one is just a patch with changes to the original source files where I added my extra license statement which was maybe unnecessary as the changes were mostly trivial.
We also already have a license file under licenses - https://github.com/cloudius-systems/osv/blob/master/licenses/bionic.txt. BTW I am planning to send more Bionic-originated unit tests around stdio, time, string and locale. On Thursday, August 20, 2020 at 3:27:05 AM UTC-4 Nadav Har'El wrote: > On Thu, Aug 20, 2020 at 7:18 AM Commit Bot <[email protected]> > wrote: > >> From: Waldemar Kozaczuk <[email protected]> >> Committer: Waldemar Kozaczuk <[email protected]> >> Branch: master >> >> tests: adapted w/ctype tests to work with boost unittest and added >> tst-string >> >> Signed-off-by: Waldemar Kozaczuk <[email protected]> >> >> --- >> diff --git a/modules/tests/Makefile b/modules/tests/Makefile >> --- a/modules/tests/Makefile >> +++ b/modules/tests/Makefile >> @@ -246,7 +246,7 @@ common-boost-tests := tst-vfs.so tst-libc-locking.so >> misc-fs-stress.so \ >> tst-bsd-tcp1-zsndrcv.so tst-async.so tst-rcu-list.so >> tst-tcp-listen.so \ >> tst-poll.so tst-bitset-iter.so tst-timer-set.so tst-clock.so \ >> tst-rcu-hashtable.so tst-unordered-ring-mpsc.so \ >> - tst-seek.so >> + tst-seek.so tst-ctype.so tst-wctype.so tst-string.so >> >> boost-tests := $(common-boost-tests) >> >> diff --git a/tests/tst-ctype.cc b/tests/tst-ctype.cc >> --- a/tests/tst-ctype.cc >> +++ b/tests/tst-ctype.cc >> @@ -14,10 +14,31 @@ >> * limitations under the License. >> */ >> >> -#include <gtest/gtest.h> >> +/* >> + * Copyright (C) 2020 Waldemar Kozaczuk >> + * >> + * This work is open source software, licensed under the terms of the >> + * BSD license as described in the LICENSE file in the top-level >> directory. >> + */ >> + >> +// This file is a verbatim copy of tests/ctype_test.cpp from the bionic >> project >> +// (https://android.googlesource.com/platform/bionic as of commit: >> 9c6d60d073db079a87fbeb5de3e72ac12838a480) >> +// PLUS some minor tweaks (mostly macros) that adapt it to run with >> boost unit framework >> +// instead of Google's test framework >> > > Good, I'm happier about such copies instead of trying to download a huge > project from which we only want a single file. > But can you please sent a followup patch which uses Bionic's copyright > statement, and license, instead of your own > copyright statement - or both if you wish? > > + >> +//#include <gtest/gtest.h> >> +#define BOOST_TEST_MODULE tst-ctype >> + >> +#include <boost/test/unit_test.hpp> >> +namespace utf = boost::unit_test; >> >> #include <ctype.h> >> >> +#define TEST(MODULE_NAME,TEST_NAME) >> BOOST_AUTO_TEST_CASE(MODULE_NAME##TEST_NAME) >> +#define EXPECT_TRUE(EXP) BOOST_REQUIRE_MESSAGE(EXP, "Failed for " << i) >> +#define EXPECT_FALSE(EXP) BOOST_REQUIRE_MESSAGE(!(EXP), "Failed for " << >> i) >> +#define EXPECT_EQ(EXP1,EXP2) BOOST_CHECK_EQUAL(EXP1,EXP2) >> + >> // We test from -1 (EOF) to 0xff, because that's the range for which >> behavior >> // is actually defined. (It's explicitly undefined below or above that.) >> Most >> // of our routines are no longer table-based and behave correctly for the >> @@ -31,9 +52,9 @@ TEST(ctype, isalnum) { >> if ((i >= '0' && i <= '9') || >> (i >= 'A' && i <= 'Z') || >> (i >= 'a' && i <= 'z')) { >> - EXPECT_TRUE(isalnum(i)) << i; >> + EXPECT_TRUE(isalnum(i)); >> } else { >> - EXPECT_FALSE(isalnum(i)) << i; >> + EXPECT_FALSE(isalnum(i)); >> } >> } >> } >> @@ -43,9 +64,9 @@ TEST(ctype, isalnum_l) { >> if ((i >= '0' && i <= '9') || >> (i >= 'A' && i <= 'Z') || >> (i >= 'a' && i <= 'z')) { >> - EXPECT_TRUE(isalnum_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isalnum_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isalnum_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isalnum_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> @@ -54,9 +75,9 @@ TEST(ctype, isalpha) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= 'A' && i <= 'Z') || >> (i >= 'a' && i <= 'z')) { >> - EXPECT_TRUE(isalpha(i)) << i; >> + EXPECT_TRUE(isalpha(i)); >> } else { >> - EXPECT_FALSE(isalpha(i)) << i; >> + EXPECT_FALSE(isalpha(i)); >> } >> } >> } >> @@ -65,139 +86,139 @@ TEST(ctype, isalpha_l) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= 'A' && i <= 'Z') || >> (i >= 'a' && i <= 'z')) { >> - EXPECT_TRUE(isalpha_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isalpha_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isalpha_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isalpha_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isascii) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= 0 && i <= 0x7f) { >> - EXPECT_TRUE(isascii(i)) << i; >> + EXPECT_TRUE(isascii(i)); >> } else { >> - EXPECT_FALSE(isascii(i)) << i; >> + EXPECT_FALSE(isascii(i)); >> } >> } >> } >> >> TEST(ctype, isblank) { >> for (int i = kMin; i < kMax; ++i) { >> if (i == '\t' || i == ' ') { >> - EXPECT_TRUE(isblank(i)) << i; >> + EXPECT_TRUE(isblank(i)); >> } else { >> - EXPECT_FALSE(isblank(i)) << i; >> + EXPECT_FALSE(isblank(i)); >> } >> } >> } >> >> TEST(ctype, isblank_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i == '\t' || i == ' ') { >> - EXPECT_TRUE(isblank_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isblank_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isblank_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isblank_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, iscntrl) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= 0 && i < ' ') || i == 0x7f) { >> - EXPECT_TRUE(iscntrl(i)) << i; >> + EXPECT_TRUE(iscntrl(i)); >> } else { >> - EXPECT_FALSE(iscntrl(i)) << i; >> + EXPECT_FALSE(iscntrl(i)); >> } >> } >> } >> >> TEST(ctype, iscntrl_l) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= 0 && i < ' ') || i == 0x7f) { >> - EXPECT_TRUE(iscntrl_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(iscntrl_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(iscntrl_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(iscntrl_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isdigit) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= '0' && i <= '9') { >> - EXPECT_TRUE(isdigit(i)) << i; >> + EXPECT_TRUE(isdigit(i)); >> } else { >> - EXPECT_FALSE(isdigit(i)) << i; >> + EXPECT_FALSE(isdigit(i)); >> } >> } >> } >> >> TEST(ctype, isdigit_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= '0' && i <= '9') { >> - EXPECT_TRUE(isdigit_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isdigit_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isdigit_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isdigit_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isgraph) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= '!' && i <= '~') { >> - EXPECT_TRUE(isgraph(i)) << i; >> + EXPECT_TRUE(isgraph(i)); >> } else { >> - EXPECT_FALSE(isgraph(i)) << i; >> + EXPECT_FALSE(isgraph(i)); >> } >> } >> } >> >> TEST(ctype, isgraph_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= '!' && i <= '~') { >> - EXPECT_TRUE(isgraph_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isgraph_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isgraph_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isgraph_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, islower) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= 'a' && i <= 'z') { >> - EXPECT_TRUE(islower(i)) << i; >> + EXPECT_TRUE(islower(i)); >> } else { >> - EXPECT_FALSE(islower(i)) << i; >> + EXPECT_FALSE(islower(i)); >> } >> } >> } >> >> TEST(ctype, islower_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= 'a' && i <= 'z') { >> - EXPECT_TRUE(islower_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(islower_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(islower_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(islower_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isprint) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= ' ' && i <= '~') { >> - EXPECT_TRUE(isprint(i)) << i; >> + EXPECT_TRUE(isprint(i)); >> } else { >> - EXPECT_FALSE(isprint(i)) << i; >> + EXPECT_FALSE(isprint(i)); >> } >> } >> } >> >> TEST(ctype, isprint_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= ' ' && i <= '~') { >> - EXPECT_TRUE(isprint_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isprint_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isprint_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isprint_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> @@ -208,9 +229,9 @@ TEST(ctype, ispunct) { >> (i >= ':' && i <= '@') || >> (i >= '[' && i <= '`') || >> (i >= '{' && i <= '~')) { >> - EXPECT_TRUE(ispunct(i)) << i; >> + EXPECT_TRUE(ispunct(i)); >> } else { >> - EXPECT_FALSE(ispunct(i)) << i; >> + EXPECT_FALSE(ispunct(i)); >> } >> } >> } >> @@ -221,49 +242,49 @@ TEST(ctype, ispunct_l) { >> (i >= ':' && i <= '@') || >> (i >= '[' && i <= '`') || >> (i >= '{' && i <= '~')) { >> - EXPECT_TRUE(ispunct_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(ispunct_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(ispunct_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(ispunct_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isspace) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= '\t' && i <= '\r') || i == ' ') { >> - EXPECT_TRUE(isspace(i)) << i; >> + EXPECT_TRUE(isspace(i)); >> } else { >> - EXPECT_FALSE(isspace(i)) << i; >> + EXPECT_FALSE(isspace(i)); >> } >> } >> } >> >> TEST(ctype, isspace_l) { >> for (int i = kMin; i < kMax; ++i) { >> if ((i >= '\t' && i <= '\r') || i == ' ') { >> - EXPECT_TRUE(isspace_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isspace_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isspace_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isspace_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> >> TEST(ctype, isupper) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= 'A' && i <= 'Z') { >> - EXPECT_TRUE(isupper(i)) << i; >> + EXPECT_TRUE(isupper(i)); >> } else { >> - EXPECT_FALSE(isupper(i)) << i; >> + EXPECT_FALSE(isupper(i)); >> } >> } >> } >> >> TEST(ctype, isupper_l) { >> for (int i = kMin; i < kMax; ++i) { >> if (i >= 'A' && i <= 'Z') { >> - EXPECT_TRUE(isupper_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isupper_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isupper_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isupper_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> @@ -273,9 +294,9 @@ TEST(ctype, isxdigit) { >> if ((i >= '0' && i <= '9') || >> (i >= 'A' && i <= 'F') || >> (i >= 'a' && i <= 'f')) { >> - EXPECT_TRUE(isxdigit(i)) << i; >> + EXPECT_TRUE(isxdigit(i)); >> } else { >> - EXPECT_FALSE(isxdigit(i)) << i; >> + EXPECT_FALSE(isxdigit(i)); >> } >> } >> } >> @@ -285,9 +306,9 @@ TEST(ctype, isxdigit_l) { >> if ((i >= '0' && i <= '9') || >> (i >= 'A' && i <= 'F') || >> (i >= 'a' && i <= 'f')) { >> - EXPECT_TRUE(isxdigit_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_TRUE(isxdigit_l(i, LC_GLOBAL_LOCALE)); >> } else { >> - EXPECT_FALSE(isxdigit_l(i, LC_GLOBAL_LOCALE)) << i; >> + EXPECT_FALSE(isxdigit_l(i, LC_GLOBAL_LOCALE)); >> } >> } >> } >> diff --git a/tests/tst-string.cc b/tests/tst-string.cc >> --- a/tests/tst-string.cc >> +++ b/tests/tst-string.cc >> @@ -0,0 +1,61 @@ >> +/* >> + * Copyright (C) 2014 The Android Open Source Project >> + * >> + * 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. >> + */ >> + >> +/* >> + * Copyright (C) 2020 Waldemar Kozaczuk >> + * >> + * This work is open source software, licensed under the terms of the >> + * BSD license as described in the LICENSE file in the top-level >> directory. >> + */ >> + >> +// This test is based on tests/string_test.cpp from the bionic project >> +// (https://android.googlesource.com/platform/bionic as of commit: >> 9c6d60d073db079a87fbeb5de3e72ac12838a480) >> +// PLUS some minor tweaks (mostly macros) that adapt it to run with >> boost unit framework >> +// instead of Google's test framework >> + >> +#define BOOST_TEST_MODULE tst-string >> + >> +#include <boost/test/unit_test.hpp> >> +namespace utf = boost::unit_test; >> + >> +#define TEST(MODULE_NAME,TEST_NAME) >> BOOST_AUTO_TEST_CASE(MODULE_NAME##TEST_NAME) >> +#define ASSERT_TRUE(EXP) BOOST_REQUIRE(EXP) >> +#define ASSERT_GT(EXP1,EXP2) BOOST_REQUIRE((EXP1)>(EXP2)) >> + >> +TEST(STRING_TEST, strxfrm_smoke) { >> + locale_t l(newlocale(LC_ALL, "C.UTF-8", nullptr)); >> + const char* src1 = "aab"; >> + char dst1[16] = {}; >> + ASSERT_GT(strxfrm(dst1, src1, sizeof(dst1)), 0U); >> + ASSERT_GT(strxfrm_l(dst1, src1, sizeof(dst1), l), 0U); >> + const char* src2 = "aac"; >> + char dst2[16] = {}; >> + ASSERT_GT(strxfrm(dst2, src2, sizeof(dst2)), 0U); >> + ASSERT_GT(strxfrm_l(dst2, src2, sizeof(dst2), l), 0U); >> + ASSERT_TRUE(strcmp(dst1, dst2) < 0); >> + freelocale(l); >> +} >> + >> +TEST(STRING_TEST, strcoll_smoke) { >> + locale_t l(newlocale(LC_ALL, "C.UTF-8", nullptr)); >> + ASSERT_TRUE(strcoll("aab", "aac") < 0); >> + ASSERT_TRUE(strcoll_l("aab", "aac", l) < 0); >> + ASSERT_TRUE(strcoll("aab", "aab") == 0); >> + ASSERT_TRUE(strcoll_l("aab", "aab", l) == 0); >> + ASSERT_TRUE(strcoll("aac", "aab") > 0); >> + ASSERT_TRUE(strcoll_l("aac", "aab", l) > 0); >> + freelocale(l); >> +} >> diff --git a/tests/tst-wctype.cc b/tests/tst-wctype.cc >> --- a/tests/tst-wctype.cc >> +++ b/tests/tst-wctype.cc >> @@ -14,13 +14,39 @@ >> * limitations under the License. >> */ >> >> +/* >> + * Copyright (C) 2020 Waldemar Kozaczuk >> + * >> + * This work is open source software, licensed under the terms of the >> + * BSD license as described in the LICENSE file in the top-level >> directory. >> + */ >> + >> +// This file is a verbatim copy of tests/ctype_test.cpp from the bionic >> project >> +// (https://android.googlesource.com/platform/bionic as of commit: >> 9c6d60d073db079a87fbeb5de3e72ac12838a480) >> +// PLUS some minor tweaks (mostly macros) that adapt it to run with >> boost unit framework >> +// instead of Google's test framework >> + >> #include <wctype.h> >> >> #include <dlfcn.h> >> >> -#include <gtest/gtest.h> >> +//#include <gtest/gtest.h> >> +#define BOOST_TEST_MODULE tst-wctype >> + >> +#include <boost/test/unit_test.hpp> >> +namespace utf = boost::unit_test; >> + >> +//#include "utils.h" >> +#define have_dl() (true) >> >> -#include "utils.h" >> +#define TEST(MODULE_NAME,TEST_NAME) >> BOOST_AUTO_TEST_CASE(MODULE_NAME##TEST_NAME) >> +#define EXPECT_TRUE(EXP) BOOST_REQUIRE(EXP) >> +#define EXPECT_FALSE(EXP) BOOST_REQUIRE(!(EXP)) >> +#define EXPECT_TRUE_P(EXP,P) BOOST_REQUIRE_MESSAGE(EXP, "Failed for " << >> P) >> +#define EXPECT_FALSE_P(EXP,P) BOOST_REQUIRE_MESSAGE(!(EXP), "Failed for >> " << P) >> +#define EXPECT_EQ(EXP1,EXP2) BOOST_CHECK_EQUAL(EXP1,EXP2) >> +#define GTEST_LOG_(I) std::cout >> +#define GTEST_SKIP() std::cout >> >> class UtfLocale { >> public: >> @@ -39,16 +65,16 @@ static void TestIsWideFn(int fn(wint_t), >> GTEST_LOG_(INFO) << "skipping unicode test " << *p; >> continue; >> } >> - EXPECT_TRUE(fn(*p)) << *p; >> - EXPECT_TRUE(fn_l(*p, l.l)) << *p; >> + EXPECT_TRUE_P(fn(*p), *p); >> + EXPECT_TRUE_P(fn_l(*p, l.l), *p); >> } >> for (const wchar_t* p = falses; *p; ++p) { >> if (!have_dl() && *p > 0x7f) { >> GTEST_LOG_(INFO) << "skipping unicode test " << *p; >> continue; >> } >> - EXPECT_FALSE(fn(*p)) << *p; >> - EXPECT_FALSE(fn_l(*p, l.l)) << *p; >> + EXPECT_FALSE_P(fn(*p), *p); >> + EXPECT_FALSE_P(fn_l(*p, l.l), *p); >> } >> } >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "OSv Development" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/osv-dev/000000000000ec379405ad476a16%40google.com >> . >> > -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/94c8ccda-7b19-41a3-b6b8-659cf5478fa1n%40googlegroups.com.
