Coverage Report - org.webmacro.servlet.MathTool
 
Classes in this File Line Coverage Branch Coverage Complexity
MathTool
12%
4/31
0%
0/20
1.435
 
 1  
 /*
 2  
  * Copyright (C) 1998-2000 Semiotek Inc.  All Rights Reserved.
 3  
  *
 4  
  * Redistribution and use in source and binary forms, with or without
 5  
  * modification, are permitted under the terms of either of the following
 6  
  * Open Source licenses:
 7  
  *
 8  
  * The GNU General Public License, version 2, or any later version, as
 9  
  * published by the Free Software Foundation
 10  
  * (http://www.fsf.org/copyleft/gpl.html);
 11  
  *
 12  
  *  or
 13  
  *
 14  
  * The Semiotek Public License (http://webmacro.org/LICENSE.)
 15  
  *
 16  
  * This software is provided "as is", with NO WARRANTY, not even the
 17  
  * implied warranties of fitness to purpose, or merchantability. You
 18  
  * assume all risks and liabilities associated with its use.
 19  
  *
 20  
  * See www.webmacro.org for more information on the WebMacro project.
 21  
  */
 22  
 
 23  
 package org.webmacro.servlet;
 24  
 
 25  
 import org.webmacro.Context;
 26  
 import org.webmacro.ContextTool;
 27  
 import org.webmacro.PropertyException;
 28  
 
 29  
 /**
 30  
  * A ContextTool for performing the more useful methods from
 31  
  * <code>java.lang.Math</code>.
 32  
  *
 33  
  * @author Eric B. Ridge (mailto:ebr@tcdi.com)
 34  
  */
 35  
 
 36  
 public class MathTool extends ContextTool
 37  
 {
 38  
 
 39  
     /** our lonely singleton */
 40  41
     private static final MathTool _instance = new MathTool();
 41  
 
 42  
 
 43  
     /**
 44  
      * @return the static instance of the MathTool
 45  
      */
 46  
     public static final MathTool getInstance ()
 47  
     {
 48  0
         return _instance;
 49  
     }
 50  
 
 51  
 
 52  
     //
 53  
     // static MathTool methods and fields
 54  
     //
 55  
 
 56  
     /** the value of PI, as defined by <code>java.lang.Math.PI</code> */
 57  
     public static final double PI = java.lang.Math.PI;
 58  
 
 59  
     /**
 60  
      * @return the smaller of the specified number
 61  
      */
 62  
     public static final int min (int a, int b)
 63  
     {
 64  0
         return (a < b) ? a : b;
 65  
     }
 66  
 
 67  
     public static final long min (long a, long b)
 68  
     {
 69  0
         return (a < b) ? a : b;
 70  
     }
 71  
 
 72  
     public static final float min (float a, float b)
 73  
     {
 74  0
         return (a < b) ? a : b;
 75  
     }
 76  
 
 77  
     public static final double min (double a, double b)
 78  
     {
 79  0
         return (a < b) ? a : b;
 80  
     }
 81  
 
 82  
 
 83  
     /**
 84  
      * @return the larger of the specified number
 85  
      */
 86  
     public static final int max (int a, int b)
 87  
     {
 88  0
         return (a > b) ? a : b;
 89  
     }
 90  
 
 91  
     public static final long max (long a, long b)
 92  
     {
 93  0
         return (a > b) ? a : b;
 94  
     }
 95  
 
 96  
     public static final float max (float a, float b)
 97  
     {
 98  0
         return (a > b) ? a : b;
 99  
     }
 100  
 
 101  
     public static final double max (double a, double b)
 102  
     {
 103  0
         return (a > b) ? a : b;
 104  
     }
 105  
 
 106  
     /**
 107  
      * Creates a pseudo-random Integer between <code>start</code>
 108  
      * and <code>end</code>, inclusive
 109  
      */
 110  
     public static final int random (int start, int end)
 111  
     {
 112  1000000
         return start + (int) ((end - start + 1) * java.lang.Math.random());
 113  
     }
 114  
 
 115  
     /**
 116  
      * @return <code>base</code> raised to the specified <code>power</code>
 117  
      */
 118  
     public static final int pow (int base, int power)
 119  
     {
 120  0
         return base ^ power;
 121  
     }
 122  
 
 123  
     public static final long pow (long base, long power)
 124  
     {
 125  0
         return base ^ power;
 126  
     }
 127  
 
 128  
 
 129  
     /**
 130  
      * @return the absolute value of the specified number
 131  
      */
 132  
     public static final int abs (int a)
 133  
     {
 134  0
         return java.lang.Math.abs(a);
 135  
     }
 136  
 
 137  
     public static final long abs (long a)
 138  
     {
 139  0
         return java.lang.Math.abs(a);
 140  
     }
 141  
 
 142  
     public static final float abs (float a)
 143  
     {
 144  0
         return java.lang.Math.abs(a);
 145  
     }
 146  
 
 147  
     public static final double abs (double a)
 148  
     {
 149  0
         return java.lang.Math.abs(a);
 150  
     }
 151  
 
 152  
 
 153  
     /**
 154  
      * @return <code>a</code> modulo <code>b</code>
 155  
      */
 156  
     public static final int mod (int a, int b)
 157  
     {
 158  0
         return a % b;
 159  
     }
 160  
 
 161  
     /**
 162  
      * Converts args to doubles and multiplies them together.
 163  
      * @return <code>a * b</code>
 164  
      */
 165  
     public static final double multiply (Number a, Number b)
 166  
     {
 167  0
         return a.doubleValue() * b.doubleValue();
 168  
     }
 169  
 
 170  
     /**
 171  
      * Converts args to doubles and divides the first by the second.
 172  
      * @return <code>a / b</code>
 173  
      */
 174  
     public static final double divide (Number a, Number b)
 175  
     {
 176  0
         return a.doubleValue() / b.doubleValue();
 177  
     }
 178  
 
 179  
 
 180  
     //
 181  
     // ContextTool implementation methods
 182  
     //
 183  
 
 184  
     /** default contsructor.  Does nothing */
 185  
     public MathTool ()
 186  104
     {
 187  104
     }
 188  
 
 189  
     /**
 190  
      * public constructor.  Does nothing.  The MathTool doesn't
 191  
      * interact with the Context, so it is ignored
 192  
      */
 193  
     public MathTool (Context context)
 194  0
     {
 195  0
     }
 196  
 
 197  
     /**
 198  
      * Tool initialization method.  The MathTool doesn't
 199  
      * interact with the context, so the <code>context</code>
 200  
      * parameter is ignored.
 201  
      */
 202  
     public Object init (Context context) throws PropertyException
 203  
     {
 204  0
         return MathTool.getInstance();
 205  
     }
 206  
 
 207  
     public static void main (String[] args)
 208  
     {
 209  0
         System.out.println("Generating 200 random ints between 10 and 99 inclusive:");
 210  0
         for (int i = 0; i < 200; i++)
 211  
         {
 212  0
             System.out.print(MathTool.random(10, 99) + " ");
 213  0
             if (((i + 1) % 20) == 0) System.out.println();
 214  
         }
 215  0
         System.out.println("\nDone.");
 216  0
     }
 217  
 }