1769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski/*
2769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * Copyright (C) 2015 The Android Open Source Project
3769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski *
4769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * you may not use this file except in compliance with the License.
6769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * You may obtain a copy of the License at
7769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski *
8769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski *
10769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * Unless required by applicable law or agreed to in writing, software
11769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * See the License for the specific language governing permissions and
14769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski * limitations under the License.
15769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski */
16769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
17769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski#include "NameMangler.h"
18769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
19769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski#include <gtest/gtest.h>
20769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski#include <string>
21769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
22769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinskinamespace aapt {
23769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
24769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam LesinskiTEST(NameManglerTest, MangleName) {
25769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    std::u16string package = u"android.appcompat";
26769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    std::u16string name = u"Platform.AppCompat";
27769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
28769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    NameMangler::mangle(package, &name);
29769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    EXPECT_EQ(name, u"android.appcompat$Platform.AppCompat");
30769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
31769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    std::u16string newPackage;
32769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    ASSERT_TRUE(NameMangler::unmangle(&name, &newPackage));
33769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    EXPECT_EQ(name, u"Platform.AppCompat");
34769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    EXPECT_EQ(newPackage, u"android.appcompat");
35769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski}
36769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
37769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam LesinskiTEST(NameManglerTest, IgnoreUnmangledName) {
38769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    std::u16string package;
39769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    std::u16string name = u"foo_bar";
40769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
41769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    EXPECT_FALSE(NameMangler::unmangle(&name, &package));
42769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski    EXPECT_EQ(name, u"foo_bar");
43769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski}
44769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
45769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski} // namespace aapt
46