/*
This file is part of Ingen.
Copyright 2018 David Robillard
Ingen is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or any later version.
Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for details.
You should have received a copy of the GNU Affero General Public License
along with Ingen. If not, see .
*/
#include
#include "ingen/FilePath.hpp"
#include "test_utils.hpp"
using Ingen::FilePath;
int
main(int, char**)
{
EXPECT_EQ(FilePath("/").parent_path(), FilePath("/"));
EXPECT_TRUE(FilePath("/abs").is_absolute())
EXPECT_FALSE(FilePath("/abs").is_relative())
EXPECT_EQ(FilePath("/abs").root_name(), FilePath());
EXPECT_EQ(FilePath("/abs").root_directory(), FilePath("/"));
EXPECT_EQ(FilePath("/abs").root_path(), FilePath("/"));
EXPECT_EQ(FilePath("/abs").relative_path(), FilePath("abs"));
EXPECT_EQ(FilePath("/abs").parent_path(), FilePath("/"));
EXPECT_EQ(FilePath("/abs").filename(), FilePath("abs"));
EXPECT_EQ(FilePath("/abs").stem(), FilePath("abs"));
EXPECT_EQ(FilePath("/abs").extension(), FilePath());
EXPECT_FALSE(FilePath("rel").is_absolute())
EXPECT_TRUE(FilePath("rel").is_relative())
EXPECT_EQ(FilePath("rel").root_name(), FilePath());
EXPECT_EQ(FilePath("rel").root_directory(), FilePath());
EXPECT_EQ(FilePath("rel").root_path(), FilePath());
EXPECT_EQ(FilePath("rel").relative_path(), FilePath());
EXPECT_EQ(FilePath("rel").parent_path(), FilePath());
EXPECT_EQ(FilePath("rel").filename(), "rel");
EXPECT_EQ(FilePath("rel").stem(), "rel");
EXPECT_EQ(FilePath("rel").extension(), FilePath());
EXPECT_FALSE(FilePath("file.txt").is_absolute())
EXPECT_TRUE(FilePath("file.txt").is_relative())
EXPECT_EQ(FilePath("file.txt").filename(), "file.txt");
EXPECT_EQ(FilePath("file.txt").stem(), "file");
EXPECT_EQ(FilePath("file.txt").extension(), ".txt");
EXPECT_TRUE(FilePath("/abs/file.txt").is_absolute())
EXPECT_FALSE(FilePath("/abs/file.txt").is_relative())
EXPECT_EQ(FilePath("/abs/file.txt").filename(), "file.txt");
EXPECT_EQ(FilePath("/abs/file.txt").stem(), "file");
EXPECT_EQ(FilePath("/abs/file.txt").extension(), ".txt");
EXPECT_FALSE(FilePath("rel/file.txt").is_absolute())
EXPECT_TRUE(FilePath("rel/file.txt").is_relative())
EXPECT_EQ(FilePath("rel/file.txt").filename(), "file.txt");
EXPECT_EQ(FilePath("rel/file.txt").stem(), "file");
EXPECT_EQ(FilePath("rel/file.txt").extension(), ".txt");
FilePath path("/x");
EXPECT_EQ(path, "/x");
path = std::move(std::string("/a"));
EXPECT_EQ(path, "/a");
path /= FilePath("b");
EXPECT_EQ(path, "/a/b");
path += FilePath("ar");
EXPECT_EQ(path, "/a/bar");
path += std::string("/c");
EXPECT_EQ(path, "/a/bar/c");
path += "a";
EXPECT_EQ(path, "/a/bar/ca");
path += 'r';
EXPECT_EQ(path, "/a/bar/car");
path += boost::string_view("/d");
EXPECT_EQ(path, "/a/bar/car/d");
const FilePath apple("apple");
const FilePath zebra("zebra");
EXPECT_TRUE(apple == apple);
EXPECT_TRUE(apple != zebra);
EXPECT_TRUE(apple < zebra);
EXPECT_TRUE(apple <= zebra);
EXPECT_TRUE(apple <= apple);
EXPECT_TRUE(zebra > apple);
EXPECT_TRUE(zebra >= apple);
EXPECT_TRUE(zebra >= zebra);
return 0;
}