1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
* Copyright (C) 2005-2018 Team Kodi
* This file is part of Kodi - https://kodi.tv
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/
#include "Util.h"
#include <gtest/gtest.h>
TEST(TestUtil, GetQualifiedFilename)
{
std::string file = "../foo";
CUtil::GetQualifiedFilename("smb://", file);
EXPECT_EQ(file, "foo");
file = "C:\\foo\\bar";
CUtil::GetQualifiedFilename("smb://", file);
EXPECT_EQ(file, "C:\\foo\\bar");
file = "../foo/./bar";
CUtil::GetQualifiedFilename("smb://my/path", file);
EXPECT_EQ(file, "smb://my/foo/bar");
file = "smb://foo/bar/";
CUtil::GetQualifiedFilename("upnp://", file);
EXPECT_EQ(file, "smb://foo/bar/");
}
TEST(TestUtil, MakeLegalPath)
{
std::string path;
#ifdef TARGET_WINDOWS
path = "C:\\foo\\bar";
EXPECT_EQ(CUtil::MakeLegalPath(path), "C:\\foo\\bar");
path = "C:\\foo:\\bar\\";
EXPECT_EQ(CUtil::MakeLegalPath(path), "C:\\foo_\\bar\\");
#else
path = "/foo/bar/";
EXPECT_EQ(CUtil::MakeLegalPath(path),"/foo/bar/");
path = "/foo?/bar";
EXPECT_EQ(CUtil::MakeLegalPath(path),"/foo_/bar");
#endif
path = "smb://foo/bar";
EXPECT_EQ(CUtil::MakeLegalPath(path), "smb://foo/bar");
path = "smb://foo/bar?/";
EXPECT_EQ(CUtil::MakeLegalPath(path), "smb://foo/bar_/");
}
TEST(TestUtil, MakeShortenPath)
{
std::string result;
EXPECT_EQ(true, CUtil::MakeShortenPath("smb://test/string/is/long/and/very/much/so", result, 10));
EXPECT_EQ("smb:/../so", result);
EXPECT_EQ(true, CUtil::MakeShortenPath("smb://test/string/is/long/and/very/much/so", result, 30));
EXPECT_EQ("smb://../../../../../../../so", result);
EXPECT_EQ(true, CUtil::MakeShortenPath("smb://test//string/is/long/and/very//much/so", result, 30));
EXPECT_EQ("smb:/../../../../../so", result);
EXPECT_EQ(true, CUtil::MakeShortenPath("//test//string/is/long/and/very//much/so", result, 30));
EXPECT_EQ("/../../../../../so", result);
}
TEST(TestUtil, ValidatePath)
{
std::string path;
#ifdef TARGET_WINDOWS
path = "C:/foo/bar/";
EXPECT_EQ(CUtil::ValidatePath(path), "C:\\foo\\bar\\");
path = "C:\\\\foo\\\\bar\\";
EXPECT_EQ(CUtil::ValidatePath(path, true), "C:\\foo\\bar\\");
path = "\\\\foo\\\\bar\\";
EXPECT_EQ(CUtil::ValidatePath(path, true), "\\\\foo\\bar\\");
#else
path = "\\foo\\bar\\";
EXPECT_EQ(CUtil::ValidatePath(path), "/foo/bar/");
path = "/foo//bar/";
EXPECT_EQ(CUtil::ValidatePath(path, true), "/foo/bar/");
#endif
path = "smb://foo/bar/";
EXPECT_EQ(CUtil::ValidatePath(path), "smb://foo/bar/");
path = "smb://foo//bar/";
EXPECT_EQ(CUtil::ValidatePath(path, true), "smb://foo/bar/");
path = "smb:\\\\foo\\\\bar\\";
EXPECT_EQ(CUtil::ValidatePath(path, true), "smb://foo/bar/");
}
|