| // Copyright 2014 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. | 
 |  | 
 | function Module(stdlib) { | 
 |   "use asm"; | 
 |  | 
 |   var ceil = stdlib.Math.ceil; | 
 |  | 
 |   // f: double -> float | 
 |   function f(a) { | 
 |     a = +a; | 
 |     return +ceil(a); | 
 |   } | 
 |  | 
 |   return { f: f }; | 
 | } | 
 |  | 
 | var f = Module({ Math: Math }).f; | 
 |  | 
 | assertTrue(isNaN(f(NaN))); | 
 | assertTrue(isNaN(f(undefined))); | 
 | assertTrue(isNaN(f(function() {}))); | 
 |  | 
 | assertEquals(0,                   f(0)); | 
 | assertEquals(+0,                  f(+0)); | 
 | assertEquals(-0,                  f(-0)); | 
 | assertEquals(1,                   f(0.49999)); | 
 | assertEquals(1,                   f(0.6)); | 
 | assertEquals(1,                   f(0.5)); | 
 | assertEquals(-0,                  f(-0.1)); | 
 | assertEquals(-0,                  f(-0.5)); | 
 | assertEquals(-0,                  f(-0.6)); | 
 | assertEquals(-1,                  f(-1.6)); | 
 | assertEquals(-0,                  f(-0.50001)); | 
 |  | 
 | assertEquals("Infinity", String(f(Infinity))); | 
 | assertEquals("-Infinity", String(f(-Infinity))); |