ConfigDescription_test.cpp revision 6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb
16f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/* 26f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Copyright (C) 2015 The Android Open Source Project 36f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 46f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 56f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * you may not use this file except in compliance with the License. 66f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * You may obtain a copy of the License at 76f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 86f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 96f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 106f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Unless required by applicable law or agreed to in writing, software 116f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 126f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * See the License for the specific language governing permissions and 146f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * limitations under the License. 156f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 166f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 176f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include "ConfigDescription.h" 186f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include "StringPiece.h" 196f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 206f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <gtest/gtest.h> 216f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <string> 226f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 236f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskinamespace aapt { 246f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 256f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskistatic ::testing::AssertionResult TestParse(const StringPiece& input, 266f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski ConfigDescription* config = nullptr) { 276f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski if (ConfigDescription::parse(input, config)) { 286f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski return ::testing::AssertionSuccess() << input << " was successfully parsed"; 296f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski } 306f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski return ::testing::AssertionFailure() << input << " could not be parsed"; 316f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 326f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 336f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseFailWhenQualifiersAreOutOfOrder) { 346f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_FALSE(TestParse("en-sw600dp-ldrtl")); 356f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_FALSE(TestParse("land-en")); 366f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_FALSE(TestParse("hdpi-320dpi")); 376f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 386f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 396f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseFailWhenQualifiersAreNotMatched) { 406f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_FALSE(TestParse("en-sw600dp-ILLEGAL")); 416f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 426f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 436f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseFailWhenQualifiersHaveTrailingDash) { 446f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_FALSE(TestParse("en-sw600dp-land-")); 456f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 466f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 476f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseBasicQualifiers) { 486f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski ConfigDescription config; 496f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("", &config)); 506f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string(""), config.toString().string()); 516f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 526f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("fr-land", &config)); 536f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string("fr-land"), config.toString().string()); 546f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 556f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("mcc310-pl-sw720dp-normal-long-port-night-" 566f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski "xhdpi-keyssoft-qwerty-navexposed-nonav", &config)); 576f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string("mcc310-pl-sw720dp-normal-long-port-night-" 586f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski "xhdpi-keyssoft-qwerty-navexposed-nonav-v13"), config.toString().string()); 596f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 606f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 616f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseLocales) { 626f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski ConfigDescription config; 636f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("en-rUS", &config)); 646f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string("en-rUS"), config.toString().string()); 656f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 666f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 676f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseQualifierAddedInApi13) { 686f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski ConfigDescription config; 696f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("sw600dp", &config)); 706f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string("sw600dp-v13"), config.toString().string()); 716f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 726f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("sw600dp-v8", &config)); 736f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(std::string("sw600dp-v13"), config.toString().string()); 746f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 756f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 766f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam LesinskiTEST(ConfigDescriptionTest, ParseCarAttribute) { 776f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski ConfigDescription config; 786f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_TRUE(TestParse("car", &config)); 796f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski EXPECT_EQ(android::ResTable_config::UI_MODE_TYPE_CAR, config.uiMode); 806f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 816f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 826f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} // namespace aapt 83