Index: test/DefaultFileSystem.cpp |
=================================================================== |
--- a/test/DefaultFileSystem.cpp |
+++ b/test/DefaultFileSystem.cpp |
@@ -10,16 +10,17 @@ |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* GNU General Public License for more details. |
* |
* You should have received a copy of the GNU General Public License |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+#include <memory> |
#include <sstream> |
#include <AdblockPlus.h> |
#include <gtest/gtest.h> |
#include "../src/DefaultFileSystem.h" |
#include "BaseJsTest.h" |
using AdblockPlus::IFileSystem; |
using AdblockPlus::FileSystemPtr; |
@@ -30,16 +31,20 @@ |
{ |
const std::string testFileName = "libadblockplus-t\xc3\xa4st-file"; |
FileSystemPtr CreateDefaultFileSystem(const Scheduler& scheduler) |
{ |
return FileSystemPtr(new DefaultFileSystem(scheduler, std::unique_ptr<DefaultFileSystemSync>(new DefaultFileSystemSync("")))); |
} |
+ class BasePathTest : public ::testing::Test |
sergei
2017/09/08 08:11:40
It seems this fixture is not required, one can sim
hub
2017/09/08 13:10:26
Done.
|
+ { |
+ }; |
+ |
class DefaultFileSystemTest : public ::testing::Test |
{ |
public: |
void SetUp() override |
{ |
fileSystem = CreateDefaultFileSystem([this](const SchedulerTask& task) |
{ |
fileSystemTasks.emplace_back(task); |
@@ -68,16 +73,68 @@ |
fileSystemTasks.pop_front(); |
} |
std::list<SchedulerTask> fileSystemTasks; |
FileSystemPtr fileSystem; |
}; |
} |
+#ifdef _WIN32 |
+#define SLASH_STRING "\\" |
+#else |
+#define SLASH_STRING "/" |
sergei
2017/09/08 08:11:40
These defines are already available as PATH_SEPARA
hub
2017/09/08 13:10:26
but they are single char, while this is a string.
sergei
2017/09/08 13:20:18
Acknowledged.
|
+#endif |
+ |
+ |
+TEST_F(BasePathTest, BasePathTest) |
sergei
2017/09/08 08:11:40
What about renaming it into something emphasizing
hub
2017/09/08 13:10:26
Done.
|
+{ |
+ class TestFSSync : public DefaultFileSystemSync |
+ { |
+ public: |
+ explicit TestFSSync(const std::string& basePath) |
+ : DefaultFileSystemSync(basePath) |
+ { |
+ } |
+ const std::string& base() const |
+ { |
+ return basePath; |
+ } |
+ }; |
+ |
+ { |
+ auto fs = std::unique_ptr<TestFSSync>(new TestFSSync("")); |
+ EXPECT_EQ("", fs->base()); |
+ std::string fullPath = fs->Resolve("bar" SLASH_STRING "baz.txt"); |
+ EXPECT_EQ("bar" SLASH_STRING "baz.txt", fullPath); |
+ } |
+ { |
+ auto fs = std::unique_ptr<TestFSSync>(new TestFSSync(SLASH_STRING)); |
+ EXPECT_EQ(SLASH_STRING, fs->base()); |
+ std::string fullPath = fs->Resolve("bar" SLASH_STRING "baz.txt"); |
+ EXPECT_EQ(SLASH_STRING "bar" SLASH_STRING "baz.txt", fullPath); |
+ } |
+ { |
+ auto fs = std::unique_ptr<TestFSSync>( |
+ new TestFSSync(SLASH_STRING "foo" SLASH_STRING)); |
+ EXPECT_EQ(SLASH_STRING "foo", fs->base()); |
+ std::string fullPath = fs->Resolve("bar" SLASH_STRING "baz.txt"); |
+ EXPECT_EQ(SLASH_STRING "foo" SLASH_STRING "bar" SLASH_STRING "baz.txt", |
+ fullPath); |
+ } |
+ { |
+ auto fs = std::unique_ptr<TestFSSync>( |
+ new TestFSSync(SLASH_STRING "foo")); |
+ EXPECT_EQ(SLASH_STRING "foo", fs->base()); |
+ std::string fullPath = fs->Resolve("bar" SLASH_STRING "baz.txt"); |
+ EXPECT_EQ(SLASH_STRING "foo" SLASH_STRING "bar" SLASH_STRING "baz.txt", |
+ fullPath); |
+ } |
+} |
+ |
TEST_F(DefaultFileSystemTest, WriteReadRemove) |
{ |
WriteString("foo"); |
bool hasReadRun = false; |
fileSystem->Read(testFileName, |
[this, &hasReadRun](IFileSystem::IOBuffer&& content, const std::string& error) |
{ |