]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/platform-bionic.git/blob - tests/libgen_test.cpp
libc: Add AF_RPMSG and PF_RPMSG
[android-sdk/platform-bionic.git] / tests / libgen_test.cpp
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
17 #include <gtest/gtest.h>
19 #include <libgen.h>
21 #include <errno.h>
23 static void TestBasename(const char* in, const char* expected_out) {
24   char* writable_in = (in != NULL) ? strdup(in) : NULL;
25   errno = 0;
26   const char* out = basename(&writable_in[0]);
27   ASSERT_STREQ(expected_out, out) << in;
28   ASSERT_EQ(0, errno) << in;
29   free(writable_in);
30 }
32 static void TestDirname(const char* in, const char* expected_out) {
33   char* writable_in = (in != NULL) ? strdup(in) : NULL;
34   errno = 0;
35   const char* out = dirname(&writable_in[0]);
36   ASSERT_STREQ(expected_out, out) << in;
37   ASSERT_EQ(0, errno) << in;
38   free(writable_in);
39 }
41 // Do not use basename as the test name, it's defined to another value in glibc
42 // so leads to a differently named test on host versus target architectures.
43 TEST(libgen, basename_smoke) {
44   TestBasename(NULL, ".");
45   TestBasename("", ".");
46   TestBasename("/usr/lib", "lib");
47   TestBasename("/usr/", "usr");
48   TestBasename("usr", "usr");
49   TestBasename("/", "/");
50   TestBasename(".", ".");
51   TestBasename("..", "..");
52   TestBasename("///", "/");
53   TestBasename("//usr//lib//", "lib");
54 }
56 TEST(libgen, dirname) {
57   TestDirname(NULL, ".");
58   TestDirname("", ".");
59   TestDirname("/usr/lib", "/usr");
60   TestDirname("/usr/", "/");
61   TestDirname("usr", ".");
62   TestDirname(".", ".");
63   TestDirname("..", ".");
64   TestDirname("/", "/");
65 }
67 #if defined(__BIONIC__) && !defined(__LP64__)
68 static void TestBasename(const char* in, const char* expected_out, int expected_rc,
69                          char* buf, size_t buf_size, int expected_errno) {
70   errno = 0;
71   int rc = basename_r(in, buf, buf_size);
72   ASSERT_EQ(expected_rc, rc) << in;
73   if (rc != -1 && buf != NULL) {
74     ASSERT_STREQ(expected_out, buf) << in;
75   }
76   ASSERT_EQ(expected_errno, errno) << in;
77 }
79 static void TestDirname(const char* in, const char* expected_out, int expected_rc,
80                         char* buf, size_t buf_size, int expected_errno) {
81   errno = 0;
82   int rc = dirname_r(in, buf, buf_size);
83   ASSERT_EQ(expected_rc, rc) << in;
84   if (rc != -1 && buf != NULL) {
85     ASSERT_STREQ(expected_out, buf) << in;
86   }
87   ASSERT_EQ(expected_errno, errno) << in;
88 }
89 #endif // __BIONIC__
91 TEST(libgen, basename_r) {
92 #if defined(__BIONIC__) && !defined(__LP64__)
93   char buf[256];
94   TestBasename("", ".",  1, NULL, 0, 0);
95   TestBasename("", ".", -1, buf, 0, ERANGE);
96   TestBasename("", ".", -1, buf, 1, ERANGE);
97   TestBasename("", ".", 1, buf, 2, 0);
98   TestBasename("", ".", 1, buf, sizeof(buf), 0);
99   TestBasename("/usr/lib", "lib", 3, buf, sizeof(buf), 0);
100   TestBasename("/usr/", "usr", 3, buf, sizeof(buf), 0);
101   TestBasename("usr", "usr", 3, buf, sizeof(buf), 0);
102   TestBasename("/", "/", 1, buf, sizeof(buf), 0);
103   TestBasename(".", ".", 1, buf, sizeof(buf), 0);
104   TestBasename("..", "..", 2, buf, sizeof(buf), 0);
105 #else // __BIONIC__
106   GTEST_LOG_(INFO) << "This test does nothing.\n";
107 #endif // __BIONIC__
110 TEST(libgen, dirname_r) {
111 #if defined(__BIONIC__) && !defined(__LP64__)
112   char buf[256];
113   TestDirname("", ".",  1, NULL, 0, 0);
114   TestDirname("", ".", -1, buf, 0, ERANGE);
115   TestDirname("", ".", -1, buf, 1, ERANGE);
116   TestDirname("", ".", 1, buf, 2, 0);
117   TestDirname("/usr/lib", "/usr", 4, buf, sizeof(buf), 0);
118   TestDirname("/usr/", "/", 1, buf, sizeof(buf), 0);
119   TestDirname("usr", ".", 1, buf, sizeof(buf), 0);
120   TestDirname(".", ".", 1, buf, sizeof(buf), 0);
121   TestDirname("..", ".", 1, buf, sizeof(buf), 0);
122 #else // __BIONIC__
123   GTEST_LOG_(INFO) << "This test does nothing.\n";
124 #endif // __BIONIC__