| /* | |
| * 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/"); | |
| } |