ConfigFilter_test.cpp revision cacb28f2d60858106e2819cc7d95a65e8bda890b
1/*
2 * Copyright (C) 2016 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/ConfigFilter.h"
18#include "test/Common.h"
19
20#include <gtest/gtest.h>
21
22namespace aapt {
23
24TEST(ConfigFilterTest, EmptyFilterMatchesAnything) {
25  AxisConfigFilter filter;
26
27  EXPECT_TRUE(filter.match(test::parseConfigOrDie("320dpi")));
28  EXPECT_TRUE(filter.match(test::parseConfigOrDie("fr")));
29}
30
31TEST(ConfigFilterTest, MatchesConfigWithUnrelatedAxis) {
32  AxisConfigFilter filter;
33  filter.addConfig(test::parseConfigOrDie("fr"));
34
35  EXPECT_TRUE(filter.match(test::parseConfigOrDie("320dpi")));
36}
37
38TEST(ConfigFilterTest, MatchesConfigWithSameValueAxis) {
39  AxisConfigFilter filter;
40  filter.addConfig(test::parseConfigOrDie("fr"));
41
42  EXPECT_TRUE(filter.match(test::parseConfigOrDie("fr")));
43}
44
45TEST(ConfigFilterTest, MatchesConfigWithSameValueAxisAndOtherUnrelatedAxis) {
46  AxisConfigFilter filter;
47  filter.addConfig(test::parseConfigOrDie("fr"));
48
49  EXPECT_TRUE(filter.match(test::parseConfigOrDie("fr-320dpi")));
50}
51
52TEST(ConfigFilterTest, MatchesConfigWithOneMatchingAxis) {
53  AxisConfigFilter filter;
54  filter.addConfig(test::parseConfigOrDie("fr-rFR"));
55  filter.addConfig(test::parseConfigOrDie("sw360dp"));
56  filter.addConfig(test::parseConfigOrDie("normal"));
57  filter.addConfig(test::parseConfigOrDie("en-rUS"));
58
59  EXPECT_TRUE(filter.match(test::parseConfigOrDie("en")));
60}
61
62TEST(ConfigFilterTest, DoesNotMatchConfigWithDifferentValueAxis) {
63  AxisConfigFilter filter;
64  filter.addConfig(test::parseConfigOrDie("fr"));
65
66  EXPECT_FALSE(filter.match(test::parseConfigOrDie("de")));
67}
68
69TEST(ConfigFilterTest, DoesNotMatchWhenOneQualifierIsExplicitlyNotMatched) {
70  AxisConfigFilter filter;
71  filter.addConfig(test::parseConfigOrDie("fr-rFR"));
72  filter.addConfig(test::parseConfigOrDie("en-rUS"));
73  filter.addConfig(test::parseConfigOrDie("normal"));
74  filter.addConfig(test::parseConfigOrDie("large"));
75  filter.addConfig(test::parseConfigOrDie("xxhdpi"));
76  filter.addConfig(test::parseConfigOrDie("sw320dp"));
77
78  EXPECT_FALSE(filter.match(test::parseConfigOrDie("fr-sw600dp-v13")));
79}
80
81TEST(ConfigFilterTest, MatchesSmallestWidthWhenSmaller) {
82  AxisConfigFilter filter;
83  filter.addConfig(test::parseConfigOrDie("sw600dp"));
84
85  EXPECT_TRUE(filter.match(test::parseConfigOrDie("fr-sw320dp-v13")));
86}
87
88TEST(ConfigFilterTest, MatchesConfigWithSameLanguageButNoRegionSpecified) {
89  AxisConfigFilter filter;
90  filter.addConfig(test::parseConfigOrDie("de-rDE"));
91
92  EXPECT_TRUE(filter.match(test::parseConfigOrDie("de")));
93}
94
95TEST(ConfigFilterTest, IgnoresVersion) {
96  AxisConfigFilter filter;
97  filter.addConfig(test::parseConfigOrDie("normal-v4"));
98
99  // The configs don't match on any axis besides version, which should be
100  // ignored.
101  EXPECT_TRUE(filter.match(test::parseConfigOrDie("sw600dp-v13")));
102}
103
104TEST(ConfigFilterTest, MatchesConfigWithRegion) {
105  AxisConfigFilter filter;
106  filter.addConfig(test::parseConfigOrDie("kok"));
107  filter.addConfig(test::parseConfigOrDie("kok-rIN"));
108  filter.addConfig(test::parseConfigOrDie("kok-v419"));
109
110  EXPECT_TRUE(filter.match(test::parseConfigOrDie("kok-rIN")));
111}
112
113}  // namespace aapt
114