Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 public class InstField {
     18     public boolean mBoolean1, mBoolean2;
     19     public byte mByte1, mByte2;
     20     public char mChar1, mChar2;
     21     public short mShort1, mShort2;
     22     public int mInt1, mInt2;
     23     public float mFloat1, mFloat2;
     24     public long mLong1, mLong2;
     25     public double mDouble1, mDouble2;
     26     public volatile long mVolatileLong1, mVolatileLong2;
     27 
     28     public void run() {
     29         assignFields();
     30         checkFields();
     31         InstField.nullCheck(null);
     32     }
     33 
     34     /*
     35      * Check access to instance fields through a null pointer.
     36      */
     37     static public void nullCheck(InstField nully) {
     38         System.out.println("InstField.nullCheck");
     39         try {
     40             int x = nully.mInt1;
     41             Main.assertTrue(false);
     42         } catch (NullPointerException npe) {
     43             // good
     44         }
     45         try {
     46             long l = nully.mLong1;
     47             Main.assertTrue(false);
     48         } catch (NullPointerException npe) {
     49             // good
     50         }
     51         try {
     52             nully.mInt1 = 5;
     53             Main.assertTrue(false);
     54         } catch (NullPointerException npe) {
     55             // good
     56         }
     57         try {
     58             nully.mLong1 = 17L;
     59             Main.assertTrue(false);
     60         } catch (NullPointerException npe) {
     61             // good
     62         }
     63     }
     64 
     65     public void assignFields() {
     66         System.out.println("InstField assign...");
     67         mBoolean1 = true;
     68         mBoolean2 = false;
     69         mByte1 = 127;
     70         mByte2 = -128;
     71         mChar1 = 32767;
     72         mChar2 = 65535;
     73         mShort1 = 32767;
     74         mShort2 = -32768;
     75         mInt1 = 65537;
     76         mInt2 = -65537;
     77         mFloat1 = 3.1415f;
     78         mFloat2 = -1.0f / 0.0f;                // -inf
     79         mLong1 = 1234605616436508552L;     // 0x1122334455667788
     80         mLong2 = -1234605616436508552L;
     81         mDouble1 = 3.1415926535;
     82         mDouble2 = 1.0 / 0.0;               // +inf
     83         mVolatileLong1 = mLong1 - 1;
     84         mVolatileLong2 = mLong2 + 1;
     85     }
     86 
     87     public void checkFields() {
     88         System.out.println("InstField check...");
     89         Main.assertTrue(mBoolean1);
     90         Main.assertTrue(!mBoolean2);
     91         Main.assertTrue(mByte1 == 127);
     92         Main.assertTrue(mByte2 == -128);
     93         Main.assertTrue(mChar1 == 32767);
     94         Main.assertTrue(mChar2 == 65535);
     95         Main.assertTrue(mShort1 == 32767);
     96         Main.assertTrue(mShort2 == -32768);
     97         Main.assertTrue(mInt1 == 65537);
     98         Main.assertTrue(mInt2 == -65537);
     99         Main.assertTrue(mFloat1 > 3.141f && mFloat1 < 3.142f);
    100         Main.assertTrue(mFloat2 < mFloat1);
    101         Main.assertTrue(mLong1 == 1234605616436508552L);
    102         Main.assertTrue(mLong2 == -1234605616436508552L);
    103         Main.assertTrue(mDouble1 > 3.141592653 && mDouble1 < 3.141592654);
    104         Main.assertTrue(mDouble2 > mDouble1);
    105         Main.assertTrue(mVolatileLong1 == 1234605616436508551L);
    106         Main.assertTrue(mVolatileLong2 == -1234605616436508551L);
    107     }
    108 }
    109