public class Misc { private static int alpha; private static int beta; private static byte byte1, byte2, byte3; private int gamma; private int pajama; private boolean boolean1; private boolean boolean2; private long time; public Misc() { expect(! boolean1); expect(! boolean2); time = 0xffffffffffffffffL; expect(! boolean1); expect(! boolean2); } private String foo(String s) { return s; } public String bar(String s) { return s; } private static String baz(String s) { return s; } private static void expect(boolean v) { if (! v) throw new RuntimeException(); } private synchronized byte sync() { byte[] array = new byte[123]; return array[42]; } private static synchronized byte syncStatic(boolean throw_) { byte[] array = new byte[123]; if (throw_) { throw new RuntimeException(); } else { return array[42]; } } public static void putInt(int val, byte[] dst, int offset) { System.out.println("put " + val); dst[offset] = (byte)((val >> 24) & 0xff); dst[offset+1] = (byte)((val >> 16) & 0xff); dst[offset+2] = (byte)((val >> 8) & 0xff); dst[offset+3] = (byte)((val ) & 0xff); } public static void putLong(long val, byte[] dst, int offset) { putInt((int)(val >> 32), dst, offset); putInt((int)val, dst, offset + 4); } public String toString() { return super.toString(); } private static int zap() { return 42; } private static int zip() { return 5 + zap(); } private static int zup() { return zap() + 5; } private static class Foo { public int a; public int b; public int c; public int[] array; } private static int bar(int a, int b, int c) { return a + b + c; } private static long roundUp(long a, long b) { a += b - 1L; return a - (a % b); } public static void main(String[] args) { { long foo = 25214903884L; int radix = 10; expect(foo > 0); foo /= radix; expect(foo > 0); } expect(Long.parseLong("25214903884") == 25214903884L); expect(Long.parseLong("-9223372036854775808") == -9223372036854775808L); expect(String.valueOf(25214903884L).equals("25214903884")); expect(String.valueOf(-9223372036854775808L).equals ("-9223372036854775808")); { boolean p = true; int[] array = new int[] { 1, 2 }; expect(array[0] == array[p ? 0 : 1]); p = false; expect(array[1] == array[p ? 0 : 1]); } expect(roundUp(156, 2) == 156); { Foo foo = new Foo(); int x = foo.a + foo.b + foo.c; bar(foo.a, foo.b, foo.c); } { int get_buffer = 2144642881; int bits_left = 30; int l = 9; int code = (((get_buffer >> (bits_left -= (l)))) & ((1<<(l))-1)); expect(code == 510); } { int width = 8; int height = 8; int depth = 24; int scanlinePad = 4; int bytesPerLine = (((width * depth + 7) / 8) + (scanlinePad - 1)) / scanlinePad * scanlinePad; expect(bytesPerLine == 24); } { int a = -5; int b = 2; expect(a >> b == -5 >> 2); expect(a >>> b == -5 >>> 2); expect(a << b == -5 << 2); expect(a + b == -5 + 2); expect(a - b == -5 - 2); expect(a * b == -5 * 2); expect(a / b == -5 / 2); expect(a % b == -5 % 2); expect((a & b) == (-5 & 2)); expect((a | b) == (-5 | 2)); expect((a ^ b) == (-5 ^ 2)); expect(-a == 5); expect(~a == ~-5); a = 5; b = 2; expect(a >> b == 5 >> 2); expect(a >>> b == 5 >>> 2); expect(a << b == 5 << 2); expect(a + b == 5 + 2); expect(a - b == 5 - 2); expect(a * b == 5 * 2); expect(a / b == 5 / 2); expect(a % b == 5 % 2); expect((a & b) == (5 & 2)); expect((a | b) == (5 | 2)); expect((a ^ b) == (5 ^ 2)); expect(-a == -5); expect(~a == ~5); } { long a = -5; long b = 2; expect(a >> b == -5L >> 2); expect(a >>> b == -5L >>> 2); expect(a << b == -5L << 2); expect(a + b == -5L + 2L); expect(a - b == -5L - 2L); expect(a * b == -5L * 2L); expect(a / b == -5L / 2L); expect(a % b == -5L % 2L); expect((a & b) == (-5L & 2L)); expect((a | b) == (-5L | 2L)); expect((a ^ b) == (-5L ^ 2L)); expect(-a == 5L); expect(~a == ~-5L); a = 5; b = 2; expect(a >> b == 5L >> 2); expect(a >>> b == 5L >>> 2); expect(a << b == 5L << 2); expect(a + b == 5L + 2L); expect(a - b == 5L - 2L); expect(a * b == 5L * 2L); expect(a / b == 5L / 2L); expect(a % b == 5L % 2L); expect((a & b) == (5L & 2L)); expect((a | b) == (5L | 2L)); expect((a ^ b) == (5L ^ 2L)); expect(-a == -5L); expect(~a == ~5L); } { long a = -25214903884L; long b = 2; expect(a >> b == -25214903884L >> 2); expect(a >>> b == -25214903884L >>> 2); expect(a << b == -25214903884L << 2); expect(a + b == -25214903884L + 2L); expect(a - b == -25214903884L - 2L); expect(a * b == -25214903884L * 2L); expect(a / b == -25214903884L / 2L); expect(a % b == -25214903884L % 2L); expect((a & b) == (-25214903884L & 2L)); expect((a | b) == (-25214903884L | 2L)); expect((a ^ b) == (-25214903884L ^ 2L)); expect(-a == 25214903884L); expect(~a == ~-25214903884L); a = 25214903884L; b = 2; expect(a >> b == 25214903884L >> 2); expect(a >>> b == 25214903884L >>> 2); expect(a << b == 25214903884L << 2); expect(a + b == 25214903884L + 2L); expect(a - b == 25214903884L - 2L); expect(a * b == 25214903884L * 2L); expect(a / b == 25214903884L / 2L); expect(a % b == 25214903884L % 2L); expect((a & b) == (25214903884L & 2L)); expect((a | b) == (25214903884L | 2L)); expect((a ^ b) == (25214903884L ^ 2L)); expect(-a == -25214903884L); expect(~a == ~25214903884L); } { long b = 2; expect((-25214903884L) >> b == -25214903884L >> 2); expect((-25214903884L) >>> b == -25214903884L >>> 2); expect((-25214903884L) << b == -25214903884L << 2); expect((-25214903884L) + b == -25214903884L + 2L); expect((-25214903884L) - b == -25214903884L - 2L); expect((-25214903884L) * b == -25214903884L * 2L); expect((-25214903884L) / b == -25214903884L / 2L); expect((-25214903884L) % b == -25214903884L % 2L); expect(((-25214903884L) & b) == (-25214903884L & 2L)); expect(((-25214903884L) | b) == (-25214903884L | 2L)); expect(((-25214903884L) ^ b) == (-25214903884L ^ 2L)); b = 2; expect(25214903884L >> b == 25214903884L >> 2); expect(25214903884L >>> b == 25214903884L >>> 2); expect(25214903884L << b == 25214903884L << 2); expect(25214903884L + b == 25214903884L + 2L); expect(25214903884L - b == 25214903884L - 2L); expect(25214903884L * b == 25214903884L * 2L); expect(25214903884L / b == 25214903884L / 2L); expect(25214903884L % b == 25214903884L % 2L); expect((25214903884L & b) == (25214903884L & 2L)); expect((25214903884L | b) == (25214903884L | 2L)); expect((25214903884L ^ b) == (25214903884L ^ 2L)); } { long a = 2L; expect(a + (-25214903884L) == 2L + (-25214903884L)); expect(a - (-25214903884L) == 2L - (-25214903884L)); expect(a * (-25214903884L) == 2L * (-25214903884L)); expect(a / (-25214903884L) == 2L / (-25214903884L)); expect(a % (-25214903884L) == 2L % (-25214903884L)); expect((a & (-25214903884L)) == (2L & (-25214903884L))); expect((a | (-25214903884L)) == (2L | (-25214903884L))); expect((a ^ (-25214903884L)) == (2L ^ (-25214903884L))); a = 2L; expect(a + 25214903884L == 2L + 25214903884L); expect(a - 25214903884L == 2L - 25214903884L); expect(a * 25214903884L == 2L * 25214903884L); expect(a / 25214903884L == 2L / 25214903884L); expect(a % 25214903884L == 2L % 25214903884L); expect((a & 25214903884L) == (2L & 25214903884L)); expect((a | 25214903884L) == (2L | 25214903884L)); expect((a ^ 25214903884L) == (2L ^ 25214903884L)); } byte2 = 0; expect(byte2 == 0); expect(Long.valueOf(231L) == 231L); { long x = 231; expect((x >> 32) == 0); expect((x >>> 32) == 0); expect((x << 32) == 992137445376L); int shift = 32; expect((x >> shift) == 0); expect((x >>> shift) == 0); expect((x << shift) == 992137445376L); long y = -231; expect((y >> 32) == 0xffffffffffffffffL); expect((y >>> 32) == 0xffffffffL); } { byte[] array = new byte[8]; putLong(231, array, 0); expect((array[0] & 0xff) == 0); expect((array[1] & 0xff) == 0); expect((array[2] & 0xff) == 0); expect((array[3] & 0xff) == 0); expect((array[4] & 0xff) == 0); expect((array[5] & 0xff) == 0); expect((array[6] & 0xff) == 0); expect((array[7] & 0xff) == 231); } java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocate(8); buffer.putLong(231); buffer.flip(); expect(buffer.getLong() == 231); boolean v = Boolean.valueOf("true"); ClassLoader.getSystemClassLoader().toString(); { int a = 2; int b = 2; int c = a + b; } { Misc m = new Misc(); m.toString(); expect(m.time == 0xffffffffffffffffL); long t = m.time; expect(t == 0xffffffffffffffffL); String s = "hello"; m.foo(s); m.bar(s); baz(s); m.sync(); syncStatic(false); try { syncStatic(true); } catch (RuntimeException e) { e.printStackTrace(); } int d = alpha; beta = 42; alpha = 43; int e = beta; int f = alpha; m.gamma = 44; expect(beta == 42); expect(alpha == 43); expect(m.gamma == 44); } expect(zip() == 47); expect(zup() == 47); { int[] array = new int[0]; Exception exception = null; try { int x = array[0]; } catch (ArrayIndexOutOfBoundsException e) { exception = e; } expect(exception != null); } { int[] array = new int[3]; int i = 0; array[i++] = 1; array[i++] = 2; array[i++] = 3; expect(array[--i] == 3); expect(array[--i] == 2); expect(array[--i] == 1); } { Object[][] array = new Object[1][1]; expect(array.length == 1); expect(array[0].length == 1); } { Object a = new Object(); Object b = new Object(); expect(a != b); Object c = a; Object d = b; expect(c != d); c = (c == a) ? b : a; d = (d == a) ? b : a; expect(c != d); } { Foo foo = new Foo(); foo.array = new int[3]; foo.a = (foo.a + 1) % foo.array.length; } { int j = 0; byte[] decodeTable = new byte[256]; for (int i = 'A'; i <= 'Z'; ++i) decodeTable[i] = (byte) j++; for (int i = 'a'; i <= 'z'; ++i) decodeTable[i] = (byte) j++; for (int i = '0'; i <= '9'; ++i) decodeTable[i] = (byte) j++; decodeTable['+'] = (byte) j++; decodeTable['/'] = (byte) j++; decodeTable['='] = 0; expect(decodeTable['a'] != 0); } } }