| Index: tools/foozzie/v8_mock.js
|
| diff --git a/tools/foozzie/v8_mock.js b/tools/foozzie/v8_mock.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..666aafde95aae95b8c7d3f3468c1ab9c1d40923b
|
| --- /dev/null
|
| +++ b/tools/foozzie/v8_mock.js
|
| @@ -0,0 +1,77 @@
|
| +// Copyright 2016 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// This is intended for permanent JS behavior changes for mocking out
|
| +// non-deterministic behavior. For temporary suppressions, please refer to
|
| +// v8_suppressions.js.
|
| +// This file is loaded before each correctness test cases and won't get
|
| +// minimized.
|
| +
|
| +
|
| +// This will be overridden in the test cases. The override can be minimized.
|
| +var __PrettyPrint = function __PrettyPrint(msg) { print(msg); };
|
| +
|
| +
|
| +// All calls to f.arguments are replaced by f.mock_arguments by an external
|
| +// script.
|
| +Object.prototype.mock_arguments = ['x', 'y']
|
| +
|
| +
|
| +// Mock Math.random.
|
| +var __magic_index_for_mocked_random = 0
|
| +Math.random = function(){
|
| + __magic_index_for_mocked_random = (__magic_index_for_mocked_random + 1) % 10
|
| + return __magic_index_for_mocked_random / 10.0;
|
| +}
|
| +
|
| +
|
| +// Mock Date.
|
| +var __magic_index_for_mocked_date = 0
|
| +var __magic_mocked_date = 1477662728696
|
| +__magic_mocked_date_now = function(){
|
| + __magic_index_for_mocked_date = (__magic_index_for_mocked_date + 1) % 10
|
| + __magic_mocked_date = __magic_mocked_date + __magic_index_for_mocked_date + 1
|
| + return __magic_mocked_date
|
| +}
|
| +
|
| +var __original_date = Date;
|
| +__magic_mock_date_handler = {
|
| + construct: function(target, args, newTarget) {
|
| + if (args.length > 0) {
|
| + return new (Function.prototype.bind.apply(__original_date, [null].concat(args)));
|
| + } else {
|
| + return new __original_date(__magic_mocked_date_now());
|
| + }
|
| + },
|
| + get: function(target, property, receiver) {
|
| + if (property == "now") {
|
| + return __magic_mocked_date_now;
|
| + }
|
| + },
|
| +}
|
| +
|
| +Date = new Proxy(Date, __magic_mock_date_handler);
|
| +
|
| +// Mock Worker.
|
| +var __magic_index_for_mocked_worker = 0
|
| +// TODO(machenbach): Randomize this for each test case, but keep stable during
|
| +// comparison. Also data and random above.
|
| +var __magic_mocked_worker_messages = [
|
| + undefined, 0, -1, "", "foo", 42, [], {}, [0], {"x": 0}
|
| +]
|
| +Worker = function(code){
|
| + try {
|
| + __PrettyPrint(eval(code));
|
| + } catch(e) {
|
| + __PrettyPrint(e);
|
| + }
|
| + this.getMessage = function(){
|
| + __magic_index_for_mocked_worker = (__magic_index_for_mocked_worker + 1) % 10
|
| + return __magic_mocked_worker_messages[__magic_index_for_mocked_worker];
|
| + }
|
| + this.postMessage = function(msg){
|
| + __PrettyPrint(msg);
|
| + }
|
| +}
|
| +
|
|
|