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 "util/Files.h"
1896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
1996917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski#include <sstream>
2096917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
21ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski#include "test/Test.h"
22ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski
2396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskinamespace aapt {
2496917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskinamespace file {
2596917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
2696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinskiclass FilesTest : public ::testing::Test {
27ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski public:
28ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  void SetUp() override {
29ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski    std::stringstream builder;
30ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski    builder << "hello" << sDirSep << "there";
31ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski    expected_path_ = builder.str();
32ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  }
33ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski
34ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski protected:
35ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  std::string expected_path_;
3696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski};
3796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
38ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam LesinskiTEST_F(FilesTest, AppendPath) {
39ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  std::string base = "hello";
40ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  AppendPath(&base, "there");
41ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  EXPECT_EQ(expected_path_, base);
4296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski}
4396917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
44ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam LesinskiTEST_F(FilesTest, AppendPathWithLeadingOrTrailingSeparators) {
45ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  std::string base = "hello/";
46ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  AppendPath(&base, "there");
47ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  EXPECT_EQ(expected_path_, base);
4896917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
49ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  base = "hello";
50ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  AppendPath(&base, "/there");
51ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  EXPECT_EQ(expected_path_, base);
5296917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
53ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  base = "hello/";
54ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  AppendPath(&base, "/there");
55ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski  EXPECT_EQ(expected_path_, base);
5696917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski}
5796917c25f09bb2f33e22f20cdfa4ece8f310b084Adam Lesinski
58ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski}  // namespace files
59ce5e56e243d262a9b65459c3bd0bb9eaadd40628Adam Lesinski}  // namespace aapt
60