blob: 601fa6ff13e048db390da6ac5b215aa781360878 [file] [log] [blame]
Sergei Datsenkobcd8e462018-04-20 15:44:56 +10001// Copyright 2018 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "cros-disks/uri.h"
6
7#include <gtest/gtest.h>
8
9namespace cros_disks {
10
11TEST(UriTest, IsUri) {
12 EXPECT_TRUE(Uri::IsUri("foo://path"));
13 EXPECT_TRUE(Uri::IsUri("foo.bar://path"));
14 EXPECT_TRUE(Uri::IsUri("foo-bar://path"));
15 EXPECT_TRUE(Uri::IsUri("foo+bar://path"));
16 EXPECT_TRUE(Uri::IsUri("foo://"));
17
François Degros15a44a82019-11-19 14:01:08 +110018 EXPECT_FALSE(Uri::IsUri("/"));
19 EXPECT_FALSE(Uri::IsUri("/foo"));
20 EXPECT_FALSE(Uri::IsUri("/foo/"));
21 EXPECT_FALSE(Uri::IsUri("/foo/bar"));
22
Sergei Datsenkobcd8e462018-04-20 15:44:56 +100023 EXPECT_FALSE(Uri::IsUri("foo:/path"));
24 EXPECT_FALSE(Uri::IsUri("foo//path"));
25 EXPECT_FALSE(Uri::IsUri("foo/path"));
26 EXPECT_FALSE(Uri::IsUri("://path"));
27
28 EXPECT_FALSE(Uri::IsUri("foo_bar://path"));
29 EXPECT_FALSE(Uri::IsUri("foo=bar://path"));
30 EXPECT_FALSE(Uri::IsUri("foo@bar://path"));
31 EXPECT_FALSE(Uri::IsUri(".bar://path"));
32 EXPECT_FALSE(Uri::IsUri("-bar://path"));
33 EXPECT_FALSE(Uri::IsUri("+bar://path"));
34}
35
36TEST(UriTest, Parse) {
37 Uri uri = Uri::Parse("foo://path");
François Degros15a44a82019-11-19 14:01:08 +110038 EXPECT_TRUE(uri.valid());
Sergei Datsenkobcd8e462018-04-20 15:44:56 +100039 EXPECT_EQ("foo", uri.scheme());
40 EXPECT_EQ("path", uri.path());
41 EXPECT_EQ("foo://path", uri.value());
42
43 uri = Uri::Parse("foo.bar-baz+boo://correct:horse@battery:staple/etc/passwd");
François Degros15a44a82019-11-19 14:01:08 +110044 EXPECT_TRUE(uri.valid());
Sergei Datsenkobcd8e462018-04-20 15:44:56 +100045 EXPECT_EQ("foo.bar-baz+boo", uri.scheme());
46 EXPECT_EQ("correct:horse@battery:staple/etc/passwd", uri.path());
47 EXPECT_EQ("foo.bar-baz+boo://correct:horse@battery:staple/etc/passwd",
48 uri.value());
49}
50
François Degros15a44a82019-11-19 14:01:08 +110051TEST(UriTest, DefaultConstructor) {
52 const Uri uri;
53 EXPECT_FALSE(uri.valid());
54 EXPECT_EQ(uri.scheme(), "");
55 EXPECT_EQ(uri.path(), "");
56 EXPECT_EQ(uri.value(), "");
57}
Sergei Datsenkobcd8e462018-04-20 15:44:56 +100058
François Degros15a44a82019-11-19 14:01:08 +110059TEST(UriTest, ParseInvalid) {
60 EXPECT_EQ(Uri::Parse("foo:/path"), Uri());
61 EXPECT_EQ(Uri::Parse("foo//path"), Uri());
62 EXPECT_EQ(Uri::Parse("foo/path"), Uri());
63 EXPECT_EQ(Uri::Parse("://path"), Uri());
64
65 EXPECT_EQ(Uri::Parse("foo_bar://path"), Uri());
66 EXPECT_EQ(Uri::Parse("foo=bar://path"), Uri());
67 EXPECT_EQ(Uri::Parse("foo@bar://path"), Uri());
68 EXPECT_EQ(Uri::Parse(".bar://path"), Uri());
69 EXPECT_EQ(Uri::Parse("-bar://path"), Uri());
70 EXPECT_EQ(Uri::Parse("+bar://path"), Uri());
Sergei Datsenkobcd8e462018-04-20 15:44:56 +100071}
72
73} // namespace cros_disks