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