/* * Copyright (C) 2014 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 "SplitDescription.h" #include "SplitSelector.h" #include "TestRules.h" namespace split { using namespace android; static ::testing::AssertionResult addSplit(Vector& splits, const char* str) { SplitDescription split; if (!SplitDescription::parse(String8(str), &split)) { return ::testing::AssertionFailure() << str << " is not a valid configuration."; } splits.add(split); return ::testing::AssertionSuccess(); } TEST(SplitSelectorTest, rulesShouldMatchSelection) { Vector splits; ASSERT_TRUE(addSplit(splits, "hdpi")); ASSERT_TRUE(addSplit(splits, "xhdpi")); ASSERT_TRUE(addSplit(splits, "xxhdpi")); ASSERT_TRUE(addSplit(splits, "mdpi")); SplitDescription targetSplit; ASSERT_TRUE(SplitDescription::parse(String8("hdpi"), &targetSplit)); SplitSelector selector(splits); SortedVector bestSplits; bestSplits.merge(selector.getBestSplits(targetSplit)); SplitDescription expected; ASSERT_TRUE(SplitDescription::parse(String8("hdpi"), &expected)); EXPECT_GE(bestSplits.indexOf(expected), 0); KeyedVector > rules = selector.getRules(); ssize_t idx = rules.indexOfKey(expected); ASSERT_GE(idx, 0); sp rule = rules[idx]; ASSERT_TRUE(rule != NULL); ASSERT_GT(ResTable_config::DENSITY_HIGH, 180); ASSERT_LT(ResTable_config::DENSITY_HIGH, 263); Rule expectedRule(test::AndRule() .add(test::GtRule(Rule::SDK_VERSION, 3)) .add(test::GtRule(Rule::SCREEN_DENSITY, 180)) .add(test::LtRule(Rule::SCREEN_DENSITY, 263))); EXPECT_RULES_EQ(rule, expectedRule); } } // namespace split