diff options
Diffstat (limited to 'libcutils/tests/fs_config.cpp')
-rw-r--r-- | libcutils/tests/fs_config.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/libcutils/tests/fs_config.cpp b/libcutils/tests/fs_config.cpp new file mode 100644 index 000000000..3917a0b2e --- /dev/null +++ b/libcutils/tests/fs_config.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2017 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. + */ + +#include <string> + +#include <gtest/gtest.h> + +#include <android-base/strings.h> + +#include <private/android_filesystem_config.h> + +extern const struct fs_path_config* __for_testing_only__android_dirs; +extern const struct fs_path_config* __for_testing_only__android_files; + +static void check_one(const struct fs_path_config* paths, const std::string& prefix, + const std::string& alternate) { + for (size_t idx = 0; paths[idx].prefix; ++idx) { + std::string path(paths[idx].prefix); + if (android::base::StartsWith(path, prefix.c_str())) { + path = alternate + path.substr(prefix.length()); + size_t second; + for (second = 0; paths[second].prefix; ++second) { + if (path == paths[second].prefix) break; + } + if (!paths[second].prefix) { + // guaranteed to fail expectations, trigger test failure with + // a message that reports the violation as an inequality. + EXPECT_STREQ((prefix + path.substr(alternate.length())).c_str(), path.c_str()); + } + } + } +} + +static void check_two(const struct fs_path_config* paths, const std::string& prefix) { + ASSERT_FALSE(paths == nullptr); + std::string alternate = "system/" + prefix; + check_one(paths, prefix, alternate); + check_one(paths, alternate, prefix); +} + +TEST(fs_config, vendor_dirs_alias) { + check_two(__for_testing_only__android_dirs, "vendor/"); +} + +TEST(fs_config, vendor_files_alias) { + check_two(__for_testing_only__android_files, "vendor/"); +} + +TEST(fs_config, oem_dirs_alias) { + check_two(__for_testing_only__android_dirs, "oem/"); +} + +TEST(fs_config, oem_files_alias) { + check_two(__for_testing_only__android_files, "oem/"); +} + +TEST(fs_config, odm_dirs_alias) { + check_two(__for_testing_only__android_dirs, "odm/"); +} + +TEST(fs_config, odm_files_alias) { + check_two(__for_testing_only__android_files, "odm/"); +} |