1// Copyright 2013 The Chromium 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 "base/files/file_path.h" 6#include "base/path_service.h" 7#include "gin/modules/console.h" 8#include "gin/modules/module_registry.h" 9#include "gin/modules/timer.h" 10#include "gin/test/file_runner.h" 11#include "gin/test/gtest.h" 12#include "mojo/apps/js/bindings/monotonic_clock.h" 13#include "mojo/apps/js/bindings/threading.h" 14#include "mojo/bindings/js/core.h" 15#include "testing/gtest/include/gtest/gtest.h" 16 17namespace mojo { 18namespace js { 19namespace { 20 21class TestRunnerDelegate : public gin::FileRunnerDelegate { 22 public: 23 TestRunnerDelegate() { 24 AddBuiltinModule(gin::Console::kModuleName, gin::Console::GetModule); 25 AddBuiltinModule(Core::kModuleName, Core::GetModule); 26 AddBuiltinModule(gin::TimerModule::kName, gin::TimerModule::GetModule); 27 AddBuiltinModule(apps::MonotonicClock::kModuleName, 28 apps::MonotonicClock::GetModule); 29 AddBuiltinModule(apps::Threading::kModuleName, apps::Threading::GetModule); 30 } 31 32 private: 33 DISALLOW_COPY_AND_ASSIGN(TestRunnerDelegate); 34}; 35 36void RunTest(std::string test, bool run_until_idle) { 37 base::FilePath path; 38 PathService::Get(base::DIR_SOURCE_ROOT, &path); 39 path = path.AppendASCII("mojo") 40 .AppendASCII("apps") 41 .AppendASCII("js") 42 .AppendASCII("bindings") 43 .AppendASCII(test); 44 TestRunnerDelegate delegate; 45 gin::RunTestFromFile(path, &delegate, run_until_idle); 46} 47 48// TODO(abarth): Should we autogenerate these stubs from GYP? 49 50TEST(JSTest, sample_test) { 51 RunTest("sample_service_unittests.js", true); 52} 53 54TEST(JSTest, connection) { 55 RunTest("connection_unittests.js", false); 56} 57 58TEST(JSTest, monotonic_clock) { 59 RunTest("monotonic_clock_unittests.js", false); 60} 61 62} // namespace 63} // namespace js 64} // namespace mojo 65