196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski/*
296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * Copyright (C) 2016 The Android Open Source Project
396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski *
496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * you may not use this file except in compliance with the License.
696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * You may obtain a copy of the License at
796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski *
896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski *
1096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * Unless required by applicable law or agreed to in writing, software
1196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
1296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * See the License for the specific language governing permissions and
1496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski * limitations under the License.
1596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski */
1696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
1796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski#include "test/Test.h"
1896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski#include "util/Files.h"
1996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
2096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski#include <sstream>
2196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
2296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskinamespace aapt {
2396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskinamespace file {
2496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
2596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskiclass FilesTest : public ::testing::Test {
2696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskipublic:
2796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    void SetUp() override {
2896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski        std::stringstream builder;
2996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski        builder << "hello" << sDirSep << "there";
3096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski        mExpectedPath = builder.str();
3196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    }
3296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
3396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskiprotected:
3496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    std::string mExpectedPath;
3596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski};
3696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
3796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam LesinskiTEST_F(FilesTest, appendPath) {
3896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    std::string base = "hello";
3996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    appendPath(&base, "there");
4096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    EXPECT_EQ(mExpectedPath, base);
4196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski}
4296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
4396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam LesinskiTEST_F(FilesTest, appendPathWithLeadingOrTrailingSeparators) {
4496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    std::string base = "hello/";
4596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    appendPath(&base, "there");
4696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    EXPECT_EQ(mExpectedPath, base);
4796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
4896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    base = "hello";
4996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    appendPath(&base, "/there");
5096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    EXPECT_EQ(mExpectedPath, base);
5196917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
5296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    base = "hello/";
5396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    appendPath(&base, "/there");
5496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski    EXPECT_EQ(mExpectedPath, base);
5596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski}
5696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
5796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski} // namespace files
5896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski} // namespace aapt
59