1 /*
2  * Copyright (C) 2017 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  */
16 
17 #include "filter/AbiFilter.h"
18 
19 #include <string>
20 
21 #include "gtest/gtest.h"
22 
23 namespace aapt {
24 namespace {
25 
26 using ::aapt::configuration::Abi;
27 
28 struct TestData {
29   std::string path;
30   bool kept;
31 };
32 
33 const TestData kTestData[] = {
34     /* Keep. */
35     {"lib/mips/libnative.so", true},
36     {"not/native/file.txt", true},
37     // Not sure if this is a valid use case.
38     {"lib/listing.txt", true},
39     {"lib/mips/foo/bar/baz.so", true},
40     {"lib/mips/x86/foo.so", true},
41     /* Discard. */
42     {"lib/mips_horse/foo.so", false},
43     {"lib/horse_mips/foo.so", false},
44     {"lib/mips64/armeabi-v7a/foo.so", false},
45     {"lib/mips64/x86_64/x86.so", false},
46     {"lib/x86/libnative.so", false},
47     {"lib/x86/foo/bar/baz.so", false},
48     {"lib/x86/x86/foo.so", false},
49     {"lib/x86_horse/foo.so", false},
50     {"lib/horse_x86/foo.so", false},
51     {"lib/x86/armeabi-v7a/foo.so", false},
52     {"lib/x86_64/x86_64/x86.so", false},
53 };
54 
55 class AbiFilterTest : public ::testing::TestWithParam<TestData> {};
56 
TEST_P(AbiFilterTest,Keep)57 TEST_P(AbiFilterTest, Keep) {
58   auto mips = AbiFilter::FromAbiList({Abi::kMips});
59   const TestData& data = GetParam();
60   EXPECT_EQ(mips->Keep(data.path), data.kept);
61 }
62 
63 INSTANTIATE_TEST_CASE_P(NativePaths, AbiFilterTest, ::testing::ValuesIn(kTestData));
64 
65 }  // namespace
66 }  // namespace aapt
67