2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.vm4brwsr;
20 import org.testng.annotations.AfterClass;
21 import org.testng.annotations.BeforeClass;
22 import org.testng.annotations.Test;
24 /** Checks behavior on Math class.
26 * @author Jaroslav Tulach <jtulach@netbeans.org>
28 public class MathTest {
29 @Test public void rintNegativeUp() throws Exception {
30 final double cnts = -453904.634;
31 assertExec("Should round up to end with 5", mathClass(), "rint__DD",
36 protected Class<?> mathClass() {
40 @Test public void rintNegativeDown() throws Exception {
41 final double cnts = -453904.434;
42 assertExec("Should round up to end with 4", mathClass(), "rint__DD",
47 @Test public void rintPositiveUp() throws Exception {
48 final double cnts = 453904.634;
49 assertExec("Should round up to end with 5", mathClass(), "rint__DD",
53 @Test public void rintPositiveDown() throws Exception {
54 final double cnts = 453904.434;
55 assertExec("Should round up to end with 4", mathClass(), "rint__DD",
59 @Test public void rintOneHalf() throws Exception {
60 final double cnts = 1.5;
61 assertExec("Should round up to end with 2", mathClass(), "rint__DD",
65 @Test public void rintNegativeOneHalf() throws Exception {
66 final double cnts = -1.5;
67 assertExec("Should round up to end with 2", mathClass(), "rint__DD",
71 @Test public void rintTwoAndHalf() throws Exception {
72 final double cnts = 2.5;
73 assertExec("Should round up to end with 2", mathClass(), "rint__DD",
77 @Test public void rintNegativeTwoOneHalf() throws Exception {
78 final double cnts = -2.5;
79 assertExec("Should round up to end with 2", mathClass(), "rint__DD",
84 @Test public void ieeeReminder1() throws Exception {
85 assertExec("Same result 1", mathClass(), "IEEEremainder__DDD",
86 Math.IEEEremainder(10.0, 4.5), 10.0, 4.5
90 @Test public void ieeeReminder2() throws Exception {
91 assertExec("Same result 1", mathClass(), "IEEEremainder__DDD",
92 Math.IEEEremainder(Integer.MAX_VALUE, -4.5), Integer.MAX_VALUE, -4.5
96 private static TestVM code;
99 public static void compileTheCode() throws Exception {
100 StringBuilder sb = new StringBuilder();
101 code = TestVM.compileClass(sb);
104 public static void releaseTheCode() {
108 private void assertExec(
109 String msg, Class<?> clazz, String method,
110 Object ret, Object... args
112 code.assertExec(msg, clazz, method, ret, args);