blob: ae6e6ef84a7e5166733387a438cdf6027decc526 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/lib/pkg_url/fuchsia_pkg_url.h"
#include <gtest/gtest.h>
namespace component {
namespace {
TEST(FuchsiaPkgUrl, Parse) {
FuchsiaPkgUrl fp;
EXPECT_FALSE(fp.Parse(""));
EXPECT_FALSE(fp.Parse("{}"));
EXPECT_FALSE(fp.Parse("file://fuchsia.com/component_hello_world#meta/hello_world.cm"));
EXPECT_FALSE(fp.Parse("#meta/stuff"));
EXPECT_FALSE(fp.Parse("fuchsia-pkg://fuchsia.com/component_hello_world#"));
EXPECT_TRUE(fp.Parse("fuchsia-pkg://fuchsia.com/component_hello_world"));
EXPECT_EQ("fuchsia.com", fp.host_name());
EXPECT_EQ("component_hello_world", fp.package_name());
EXPECT_EQ("0", fp.variant());
EXPECT_EQ("", fp.hash());
EXPECT_EQ("", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://fuchsia.com/component_hello_world/0", fp.package_path());
EXPECT_TRUE(fp.Parse("fuchsia-pkg://fuchsia.com/component_hello_world#meta/hello_world.cm"));
EXPECT_EQ("fuchsia.com", fp.host_name());
EXPECT_EQ("component_hello_world", fp.package_name());
EXPECT_EQ("0", fp.variant());
EXPECT_EQ("", fp.hash());
EXPECT_EQ("meta/hello_world.cm", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://fuchsia.com/component_hello_world/0", fp.package_path());
EXPECT_TRUE(fp.Parse("fuchsia-pkg://fuchsia.com/component_hello_world#meta/stuff"));
EXPECT_EQ("fuchsia.com", fp.host_name());
EXPECT_EQ("component_hello_world", fp.package_name());
EXPECT_EQ("0", fp.variant());
EXPECT_EQ("", fp.hash());
EXPECT_EQ("meta/stuff", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://fuchsia.com/component_hello_world/0", fp.package_path());
EXPECT_TRUE(fp.Parse("fuchsia-pkg://example.com/data-package#stuff"));
EXPECT_EQ("example.com", fp.host_name());
EXPECT_EQ("data-package", fp.package_name());
EXPECT_EQ("0", fp.variant());
EXPECT_EQ("", fp.hash());
EXPECT_EQ("stuff", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://example.com/data-package/0", fp.package_path());
EXPECT_TRUE(fp.Parse("fuchsia-pkg://example.com/data-package/variant123#stuff"));
EXPECT_EQ("example.com", fp.host_name());
EXPECT_EQ("data-package", fp.package_name());
EXPECT_EQ("variant123", fp.variant());
EXPECT_EQ("", fp.hash());
EXPECT_EQ("stuff", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://example.com/data-package/variant123", fp.package_path());
EXPECT_TRUE(fp.Parse("fuchsia-pkg://example.com/data-package/variant123?hash=1234#stuff"));
EXPECT_EQ("example.com", fp.host_name());
EXPECT_EQ("data-package", fp.package_name());
EXPECT_EQ("variant123", fp.variant());
EXPECT_EQ("1234", fp.hash());
EXPECT_EQ("stuff", fp.resource_path());
EXPECT_EQ("fuchsia-pkg://example.com/data-package/variant123?hash=1234", fp.package_path());
}
TEST(FuchsiaPkgUrl, Equality) {
{
FuchsiaPkgUrl fp1;
ASSERT_TRUE(fp1.Parse("fuchsia-pkg://fuchsia.com/hello"));
auto fp2 = fp1;
FuchsiaPkgUrl fp3;
ASSERT_TRUE(fp3.Parse("fuchsia-pkg://fuchsia.com/goodbye"));
EXPECT_EQ(fp1, fp2);
EXPECT_NE(fp1, fp3);
}
{
FuchsiaPkgUrl fp1;
ASSERT_TRUE(fp1.Parse("fuchsia-pkg://fuchsia.com/hello#meta/hello.cm"));
auto fp2 = fp1;
FuchsiaPkgUrl fp3;
ASSERT_TRUE(fp3.Parse("fuchsia-pkg://fuchsia.com/hello"));
FuchsiaPkgUrl fp4;
ASSERT_TRUE(fp4.Parse("fuchsia-pkg://fuchsia.com/hello#meta/goodbye.cm"));
EXPECT_EQ(fp1, fp2);
EXPECT_NE(fp1, fp3);
EXPECT_NE(fp1, fp4);
}
{
FuchsiaPkgUrl fp1;
ASSERT_TRUE(fp1.Parse("fuchsia-pkg://fuchsia.com/hello/1#meta/hello.cm"));
auto fp2 = fp1;
FuchsiaPkgUrl fp3;
ASSERT_TRUE(fp3.Parse("fuchsia-pkg://fuchsia.com/hello#meta/hello.cm"));
FuchsiaPkgUrl fp4;
ASSERT_TRUE(fp4.Parse("fuchsia-pkg://fuchsia.com/hello/2#meta/hello.cm"));
EXPECT_EQ(fp1, fp2);
EXPECT_NE(fp1, fp3);
EXPECT_NE(fp1, fp4);
}
{
FuchsiaPkgUrl fp1;
ASSERT_TRUE(fp1.Parse("fuchsia-pkg://fuchsia.com/hello/1?hash=123#meta/hello.cm"));
auto fp2 = fp1;
FuchsiaPkgUrl fp3;
ASSERT_TRUE(fp3.Parse("fuchsia-pkg://fuchsia.com/hello/1#meta/hello.cm"));
FuchsiaPkgUrl fp4;
ASSERT_TRUE(fp4.Parse("fuchsia-pkg://fuchsia.com/hello/1?hash=456#meta/hello.cm"));
EXPECT_EQ(fp1, fp2);
EXPECT_NE(fp1, fp3);
EXPECT_NE(fp1, fp4);
}
}
} // namespace
} // namespace component