1 /*
   2  * Copyright 2001-2005 Sun Microsystems, Inc.  All Rights Reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  20  * CA 95054 USA or visit www.sun.com if you need additional information or
  21  * have any questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @compile Constants.java
  27  * @bug 4397405 4826652
  28  * @summary Testing constant-ness of Double.{MIN_VALUE, MAX_VALUE}, etc.
  29  * @author Joseph D. Darcy
  30  */
  31 
  32 public class Constants {
  33     /*
  34      * This compile-only test is to make sure that the primitive
  35      * public static final fields in java.lang.Double are "constant
  36      * expressions" as defined by "The Java Language Specification,
  37      * 2nd edition" section 15.28; a different test checks the values
  38      * of those fields.
  39      */
  40     public static void main(String[] args) throws Exception {
  41         int i = 0;
  42         switch (i) {
  43         case (int)Double.NaN:                   // 0
  44             System.out.println("Double.NaN is a constant!");
  45             break;
  46         case (int)Double.MIN_VALUE + 1:         // 0 + 1
  47             System.out.println("Double.MIN_VALUE is a constant!");
  48             break;
  49         case (int)Double.MIN_NORMAL + 2:        // 0 + 2
  50             System.out.println("Double.MIN_NORMAL is a constant!");
  51             break;
  52         case Double.MIN_EXPONENT:               // -1022
  53             System.out.println("Double.MIN_EXPONENT is a constant!");
  54             break;
  55         case Double.MAX_EXPONENT:               // 1023
  56             System.out.println("Double.MAX_EXPONENT is a constant!");
  57             break;
  58         case (int)Double.MAX_VALUE - 1:         // Integer.MAX_VALUE - 1
  59             System.out.println("Double.MAX_VALUE is a constant!");
  60             break;
  61         case (int)Double.POSITIVE_INFINITY:     // Integer.MAX_VALUE
  62             System.out.println("Double.POSITIVE_INFINITY is a constant!");
  63             break;
  64         case (int)Double.NEGATIVE_INFINITY:     // Integer.MIN_VALUE
  65             System.out.println("Double.NEGATIVE_INFINITY is a constant!");
  66             break;
  67         }
  68     }
  69 }