Sergei Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 1 | // 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 | |
| 9 | namespace cros_disks { |
| 10 | |
| 11 | TEST(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 Degros | 15a44a8 | 2019-11-19 14:01:08 +1100 | [diff] [blame] | 18 | 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 Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 23 | 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 | |
| 36 | TEST(UriTest, Parse) { |
| 37 | Uri uri = Uri::Parse("foo://path"); |
François Degros | 15a44a8 | 2019-11-19 14:01:08 +1100 | [diff] [blame] | 38 | EXPECT_TRUE(uri.valid()); |
Sergei Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 39 | 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 Degros | 15a44a8 | 2019-11-19 14:01:08 +1100 | [diff] [blame] | 44 | EXPECT_TRUE(uri.valid()); |
Sergei Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 45 | 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 Degros | 15a44a8 | 2019-11-19 14:01:08 +1100 | [diff] [blame] | 51 | TEST(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 Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 58 | |
François Degros | 15a44a8 | 2019-11-19 14:01:08 +1100 | [diff] [blame] | 59 | TEST(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 Datsenko | bcd8e46 | 2018-04-20 15:44:56 +1000 | [diff] [blame] | 71 | } |
| 72 | |
| 73 | } // namespace cros_disks |