// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/fusebox/fusebox_moniker.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace fusebox {
TEST(MonikerMapTest, ExtractTokenResult) {
using ResultType = MonikerMap::ExtractTokenResult::ResultType;
{
auto result = MonikerMap::ExtractToken("foo/bar");
EXPECT_EQ(result.result_type, ResultType::NOT_A_MONIKER_FS_URL);
}
{
auto result = MonikerMap::ExtractToken(
"something_else/0123456789ABCDEF0000111122223333");
EXPECT_EQ(result.result_type, ResultType::NOT_A_MONIKER_FS_URL);
}
{
auto result = MonikerMap::ExtractToken("monikerz");
EXPECT_EQ(result.result_type, ResultType::NOT_A_MONIKER_FS_URL);
}
{
auto result = MonikerMap::ExtractToken("moniker");
EXPECT_EQ(result.result_type, ResultType::MONIKER_FS_URL_BUT_ONLY_ROOT);
}
{
auto result = MonikerMap::ExtractToken("moniker/");
EXPECT_EQ(result.result_type,
ResultType::MONIKER_FS_URL_BUT_NOT_WELL_FORMED);
}
{
auto result = MonikerMap::ExtractToken("moniker/0123");
EXPECT_EQ(result.result_type,
ResultType::MONIKER_FS_URL_BUT_NOT_WELL_FORMED);
}
{
auto result =
MonikerMap::ExtractToken("moniker/0123456789ABCDEF0000111122223333");
EXPECT_EQ(result.result_type, ResultType::OK);
EXPECT_EQ(result.token,
base::Token(0x0123456789ABCDEFull, 0x0000111122223333ull));
}
{
auto result = MonikerMap::ExtractToken(
"moniker/0123456789ABCDEF0000111122223333.html");
EXPECT_EQ(result.result_type, ResultType::OK);
EXPECT_EQ(result.token,
base::Token(0x0123456789ABCDEFull, 0x0000111122223333ull));
}
{
auto result = MonikerMap::ExtractToken(
"moniker/0123456789ABCDEF0000111122223333_no_dot");
EXPECT_EQ(result.result_type,
ResultType::MONIKER_FS_URL_BUT_NOT_WELL_FORMED);
}
}
} // namespace fusebox