< prev index next >

test/native/runtime/test_semaphore.cpp

Print this page
rev 13183 : imported patch trywait-test

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -60,10 +60,22 @@
   for (uint i = 0; i < total; i++) {
     sem.wait();
   }
 }
 
+static void test_semaphore_trywait(uint value, uint max) {
+  Semaphore sem(value);
+
+  for (uint i = 0; i < max; ++i) {
+    if (i < value) {
+      ASSERT_EQ(sem.trywait(), true);
+    } else {
+      ASSERT_EQ(sem.trywait(), false);
+    }
+  }
+}
+
 TEST(Semaphore, single_separate) {
   for (uint i = 1; i < 10; i++) {
     test_semaphore_single_separate(i);
   }
 }

@@ -81,5 +93,13 @@
         test_semaphore_many(value, max, inc);
       }
     }
   }
 }
+
+TEST(Semaphore, trywait) {
+  for (uint max = 0; max < 10; max++) {
+    for (uint value = 0; value < max; value++) {
+      test_semaphore_trywait(value, max);
+    }
+  }
+}
< prev index next >