// Copyright 2014 The Chromium 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 "shell/mojo_url_resolver.h"

#include "base/logging.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace mojo {
namespace shell {
namespace test {
namespace {

typedef testing::Test MojoURLResolverTest;

TEST_F(MojoURLResolverTest, MojoURLsFallThrough) {
  MojoURLResolver resolver;
  resolver.AddCustomMapping(GURL("mojo:test"), GURL("mojo:foo"));
  const GURL base_url("file:/base");
  resolver.SetBaseURL(base_url);
  std::string resolved(resolver.Resolve(GURL("mojo:test")).spec());
  // Resolved must start with |base_url|.
  EXPECT_EQ(base_url.spec(), resolved.substr(0, base_url.spec().size()));
  // And must contain foo.
  EXPECT_NE(std::string::npos, resolved.find("foo"));
}

}  // namespace
}  // namespace test
}  // namespace shell
}  // namespace mojo
