summaryrefslogtreecommitdiffstats
path: root/jack-tests/tests/com/android/jack/synchronize
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2014-03-19 16:25:37 +0100
committerYohann Roussel <yroussel@google.com>2014-03-20 15:13:33 +0100
commit4eceb95409e844fdc33c9c706e1dc307bfd40303 (patch)
treeee9f4f3fc79f757c79081c336bce4f1782c6ccd8 /jack-tests/tests/com/android/jack/synchronize
parent3d2402901b1a6462e2cf47a6fd09711f327961c3 (diff)
downloadtoolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.zip
toolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.tar.gz
toolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.tar.bz2
Initial Jack import.
Change-Id: I953cf0a520195a7187d791b2885848ad0d5a9b43
Diffstat (limited to 'jack-tests/tests/com/android/jack/synchronize')
-rw-r--r--jack-tests/tests/com/android/jack/synchronize/test001/dx/Tests.java62
-rw-r--r--jack-tests/tests/com/android/jack/synchronize/test001/jack/Synchronize.java80
-rw-r--r--jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized.java30
-rw-r--r--jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized2.java34
4 files changed, 206 insertions, 0 deletions
diff --git a/jack-tests/tests/com/android/jack/synchronize/test001/dx/Tests.java b/jack-tests/tests/com/android/jack/synchronize/test001/dx/Tests.java
new file mode 100644
index 0000000..1545979
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/synchronize/test001/dx/Tests.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.jack.synchronize.test001.dx;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.android.jack.synchronize.test001.jack.Synchronize;
+
+/**
+ * Tests Synchronization.
+ */
+public class Tests {
+ @Test
+ public void lockUnlockWithSameObject() {
+ Assert.assertEquals(1, Synchronize.syncBlock());
+ }
+
+ @Test
+ public void waitFor() {
+ Assert.assertEquals(1, Synchronize.waitFor());
+ }
+
+ @Test
+ public void exceptionRange() {
+ Assert.assertEquals(1, Synchronize.exceptionRange(new Integer(1)));
+ try {
+ Synchronize.exceptionRange(new Integer(0));
+ Assert.fail();
+ } catch (IllegalArgumentException e) {
+ // Ok
+ }
+ }
+
+ @Test
+ public void exceptionRange2() {
+ Synchronize.result = 0;
+ Synchronize.exceptionRange2();
+ Assert.assertEquals(3, Synchronize.result);
+ }
+
+ @Test
+ public void synchronizeIntoACatch() {
+ Synchronize.result = 0;
+ Synchronize.synchronizeIntoACatch();
+ Assert.assertEquals(1, Synchronize.result);
+ }
+}
diff --git a/jack-tests/tests/com/android/jack/synchronize/test001/jack/Synchronize.java b/jack-tests/tests/com/android/jack/synchronize/test001/jack/Synchronize.java
new file mode 100644
index 0000000..d5c404d
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/synchronize/test001/jack/Synchronize.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.jack.synchronize.test001.jack;
+
+/**
+ * Synchronize test.
+ */
+public class Synchronize {
+
+ public static Object getObject() {
+ return new Object();
+ }
+
+ // Check that jlock/junlock use the same object, otherwise java.lang.IllegalMonitorStateException
+ // will be trigger.
+ public static int syncBlock() {
+ synchronized(getObject()) {
+ return 1;
+ }
+ }
+
+ public static int waitFor() {
+ Object exitValueMutex = new Object();
+ Integer exitValue = null;
+ synchronized (exitValueMutex) {
+ while (exitValue != null) {
+ }
+ return 1;
+ }
+ }
+
+ public static synchronized int exceptionRange(Integer i) throws IllegalArgumentException {
+ if (i.intValue() > 0) {
+ synchronized (i) {
+ return i.intValue();
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+
+ public static int result = 0;
+
+ public static synchronized void exceptionRange2() {
+ try {
+ result += 1;
+ } finally {
+ synchronized (Synchronize.class) {
+ try {
+ result += 1;
+ } finally {
+ result += 1;
+ }
+ }
+ }
+ }
+
+ public static void synchronizeIntoACatch() {
+ try {
+ result += 1;
+ } catch (Exception e) {
+ synchronized (Synchronize.class) {
+ result += 1;
+ }
+ }
+ }
+}
diff --git a/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized.java b/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized.java
new file mode 100644
index 0000000..36101a6
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.jack.synchronize.test002.jack;
+
+public class Synchronized {
+
+ public static int sync(int a) {
+ synchronized (Synchronized.class) {
+ return 1;
+ }
+ }
+
+ public static synchronized int syncMethod(int a) {
+ return 1;
+ }
+}
diff --git a/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized2.java b/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized2.java
new file mode 100644
index 0000000..d56f11a
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/synchronize/test002/jack/Synchronized2.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.jack.synchronize.test002.jack;
+
+public class Synchronized2 {
+
+ public static synchronized int syncStaticMethod(int a) {
+ return 1;
+ }
+
+ public synchronized int syncInstanceMethod(int a) {
+ return 1;
+ }
+
+ public int syncBlock(int a) {
+ synchronized (this) {
+ return 1;
+ }
+ }
+}