// Copyright 2008 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS-IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. goog.provide('goog.testing.MockRandomTest'); goog.setTestOnly('goog.testing.MockRandomTest'); goog.require('goog.testing.MockRandom'); goog.require('goog.testing.jsunit'); function testMockRandomInstall() { var random = new goog.testing.MockRandom([]); var originalRandom = Math.random; assertFalse(!!random.installed_); random.install(); assertTrue(random.installed_); assertNotEquals(Math.random, originalRandom); random.uninstall(); assertFalse(random.installed_); assertEquals(originalRandom, Math.random); } function testMockRandomRandom() { var random = new goog.testing.MockRandom([], true); assertFalse(random.hasMoreValues()); random.inject(2); assertTrue(random.hasMoreValues()); assertEquals(2, Math.random()); random.inject([1, 2, 3]); assertTrue(random.hasMoreValues()); assertEquals(1, Math.random()); assertEquals(2, Math.random()); assertEquals(3, Math.random()); assertFalse(random.hasMoreValues()); assertNotUndefined(Math.random()); } function testRandomStrictlyFromSequence() { var random = new goog.testing.MockRandom([], /* install */ true); random.setStrictlyFromSequence(true); assertFalse(random.hasMoreValues()); assertThrows(function() { Math.random(); }); random.inject(3); assertTrue(random.hasMoreValues()); assertNotThrows(function() { Math.random(); }); random.setStrictlyFromSequence(false); assertFalse(random.hasMoreValues()); assertNotThrows(function() { Math.random(); }); }