summaryrefslogtreecommitdiff
path: root/libjava/testsuite
diff options
context:
space:
mode:
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-11 00:47:37 +0000
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-11 00:47:37 +0000
commit8be2ba640cad8c4e2e8adc07f39ced4c23d341ce (patch)
tree7e25cf9cc0816f594312d12433b210413d1349e9 /libjava/testsuite
parent7703a7deab2da43ee744891c37f00d7369d3b268 (diff)
downloadgcc-8be2ba640cad8c4e2e8adc07f39ced4c23d341ce.tar.gz
libjava:
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com> * Makefile.am: Added `java/lang/ThreadLocal.java'. * Makefile.in: Regenerate. * java/lang/ThreadLocal.java: Initial import. libjava/testsuite: 2001-07-10 Alexandre Petit-Bianco <apbianco@readhat.com> * libjava.lang/TLtest.java: New file. * libjava.lang/TLtest.out: New file. (http://gcc.gnu.org/ml/java-patches/2001-q3/msg00042.html ) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43915 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/testsuite')
-rw-r--r--libjava/testsuite/ChangeLog5
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.java60
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.out2
3 files changed, 67 insertions, 0 deletions
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog
index cc7acc8506e..5ab3a0f14a6 100644
--- a/libjava/testsuite/ChangeLog
+++ b/libjava/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2001-07-10 Alexandre Petit-Bianco <apbianco@readhat.com>
+
+ * libjava.lang/TLtest.java: New file.
+ * libjava.lang/TLtest.out: New file.
+
2001-07-06 Andrew Haley <aph@cambridge.redhat.com>
* libjava.lang/Divide_1.java: Add many more test cases.
diff --git a/libjava/testsuite/libjava.lang/TLtest.java b/libjava/testsuite/libjava.lang/TLtest.java
new file mode 100644
index 00000000000..b7f4115b23f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.java
@@ -0,0 +1,60 @@
+class TLtest extends Thread {
+
+ public static void main (String [] args) {
+ Data d = new Data ();
+ new ThreadTest (d, "A").start ();
+ new ThreadTest (d, "B").start ();
+ }
+}
+
+class Data {
+
+ private static ThreadLocal owner = new ThreadLocal () {
+ public Object initialValue () { return ("0"); }
+ };
+ /* A thread will call `set' to set a value it wants an instance
+ of Data to associate with it and only it. */
+ synchronized public void set (String v){owner.set (v);}
+ /* A thread will call `get' to get a value it wants an instance
+ of Data to associate with it and only it. */
+ synchronized public String get (){return (String)owner.get();}
+}
+
+class ThreadTest extends Thread {
+
+ public Data d;
+
+ ThreadTest (Data d, String name) {
+ super (name);
+ this.d = d;
+ }
+
+ public void run () {
+
+ int value = 0;
+ int ref = 0;
+
+ for (int i = 0; i < 20; i++) {
+
+ int rand = (int)(Math.random ()*20);
+
+ /* Read `value', ref is kept for comparison */
+ value = Integer.parseInt (d.get());
+
+ /* change `value' and ref by a random number, store `value'. */
+ value += rand; ref += rand;
+ d.set (Integer.toString (value));
+
+ try {
+ sleep((int)(Math.random() * 500));
+ } catch (InterruptedException e) {}
+ }
+
+ /* If a thread didn't have private value to attach to the
+ instance of Data, results wouldn't be the same */
+ if (ref == value)
+ System.out.println ("test OK.");
+ else
+ System.out.println ("test failed.");
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/TLtest.out b/libjava/testsuite/libjava.lang/TLtest.out
new file mode 100644
index 00000000000..951592b6678
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/TLtest.out
@@ -0,0 +1,2 @@
+test OK.
+test OK.