| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| public class InstField { |
| public boolean mBoolean1, mBoolean2; |
| public byte mByte1, mByte2; |
| public char mChar1, mChar2; |
| public short mShort1, mShort2; |
| public int mInt1, mInt2; |
| public float mFloat1, mFloat2; |
| public long mLong1, mLong2; |
| public double mDouble1, mDouble2; |
| public volatile long mVolatileLong1, mVolatileLong2; |
| |
| public void run() { |
| assignFields(); |
| checkFields(); |
| InstField.nullCheck(null); |
| } |
| |
| /* |
| * Check access to instance fields through a null pointer. |
| */ |
| static public void nullCheck(InstField nully) { |
| System.out.println("InstField.nullCheck"); |
| try { |
| int x = nully.mInt1; |
| Main.assertTrue(false); |
| } catch (NullPointerException npe) { |
| // good |
| } |
| try { |
| long l = nully.mLong1; |
| Main.assertTrue(false); |
| } catch (NullPointerException npe) { |
| // good |
| } |
| try { |
| nully.mInt1 = 5; |
| Main.assertTrue(false); |
| } catch (NullPointerException npe) { |
| // good |
| } |
| try { |
| nully.mLong1 = 17L; |
| Main.assertTrue(false); |
| } catch (NullPointerException npe) { |
| // good |
| } |
| } |
| |
| public void assignFields() { |
| System.out.println("InstField assign..."); |
| mBoolean1 = true; |
| mBoolean2 = false; |
| mByte1 = 127; |
| mByte2 = -128; |
| mChar1 = 32767; |
| mChar2 = 65535; |
| mShort1 = 32767; |
| mShort2 = -32768; |
| mInt1 = 65537; |
| mInt2 = -65537; |
| mFloat1 = 3.1415f; |
| mFloat2 = -1.0f / 0.0f; // -inf |
| mLong1 = 1234605616436508552L; // 0x1122334455667788 |
| mLong2 = -1234605616436508552L; |
| mDouble1 = 3.1415926535; |
| mDouble2 = 1.0 / 0.0; // +inf |
| mVolatileLong1 = mLong1 - 1; |
| mVolatileLong2 = mLong2 + 1; |
| } |
| |
| public void checkFields() { |
| System.out.println("InstField check..."); |
| Main.assertTrue(mBoolean1); |
| Main.assertTrue(!mBoolean2); |
| Main.assertTrue(mByte1 == 127); |
| Main.assertTrue(mByte2 == -128); |
| Main.assertTrue(mChar1 == 32767); |
| Main.assertTrue(mChar2 == 65535); |
| Main.assertTrue(mShort1 == 32767); |
| Main.assertTrue(mShort2 == -32768); |
| Main.assertTrue(mInt1 == 65537); |
| Main.assertTrue(mInt2 == -65537); |
| Main.assertTrue(mFloat1 > 3.141f && mFloat1 < 3.142f); |
| Main.assertTrue(mFloat2 < mFloat1); |
| Main.assertTrue(mLong1 == 1234605616436508552L); |
| Main.assertTrue(mLong2 == -1234605616436508552L); |
| Main.assertTrue(mDouble1 > 3.141592653 && mDouble1 < 3.141592654); |
| Main.assertTrue(mDouble2 > mDouble1); |
| Main.assertTrue(mVolatileLong1 == 1234605616436508551L); |
| Main.assertTrue(mVolatileLong2 == -1234605616436508551L); |
| } |
| } |