summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate
diff options
context:
space:
mode:
Diffstat (limited to 'src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate')
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/CMakeLists.txt5
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/CMakeLists.txt19
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/PAL_Initialize_Terminate.c33
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/testinfo.dat13
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/CMakeLists.txt19
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/pal_initialize_twice.c41
-rw-r--r--src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/testinfo.dat15
7 files changed, 145 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/CMakeLists.txt b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/CMakeLists.txt
new file mode 100644
index 0000000000..ef14ea5352
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 2.8.12.2)
+
+add_subdirectory(test1)
+add_subdirectory(test2)
+
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/CMakeLists.txt b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/CMakeLists.txt
new file mode 100644
index 0000000000..416439d650
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 2.8.12.2)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(SOURCES
+ PAL_Initialize_Terminate.c
+)
+
+add_executable(paltest_pal_initialize_terminate_test1
+ ${SOURCES}
+)
+
+add_dependencies(paltest_pal_initialize_terminate_test1 coreclrpal)
+
+target_link_libraries(paltest_pal_initialize_terminate_test1
+ pthread
+ m
+ coreclrpal
+)
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/PAL_Initialize_Terminate.c b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/PAL_Initialize_Terminate.c
new file mode 100644
index 0000000000..29bb2c3b4f
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/PAL_Initialize_Terminate.c
@@ -0,0 +1,33 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*=============================================================
+**
+** Source: pal_initialize_terminate.c
+**
+** Purpose: Positive test the PAL_Initialize and PAL_Terminate API.
+** Call PAL_Initialize to initialize the PAL
+** environment and call PAL_Terminate to clean up the PAL
+** environment.
+**
+
+**
+**============================================================*/
+#include <palsuite.h>
+
+int __cdecl main(int argc, char *argv[])
+{
+ int err;
+
+ /* Initialize the PAL environment */
+ err = PAL_Initialize(argc, argv);
+
+ if(0 != err)
+ {
+ ExitProcess(1);
+ }
+
+ PAL_Terminate();
+ return 0;
+}
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/testinfo.dat b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/testinfo.dat
new file mode 100644
index 0000000000..8ffe3bb7c7
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test1/testinfo.dat
@@ -0,0 +1,13 @@
+# Licensed to the .NET Foundation under one or more agreements.
+# The .NET Foundation licenses this file to you under the MIT license.
+# See the LICENSE file in the project root for more information.
+
+Version = 1.0
+Section = PAL_Specific
+Function = PAL_Initialize and PAL_Terminate
+Name = Positive test for PAL_Initialize and PAL_Terminate
+TYPE = DEFAULT
+EXE1 = pal_initialize_terminate
+Description
+=Test the PAL_Initialize to initialize the PAL environment
+=Test the PAL_Terminate to clean up the PAL environment
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/CMakeLists.txt b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/CMakeLists.txt
new file mode 100644
index 0000000000..b7661fd240
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 2.8.12.2)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(SOURCES
+ pal_initialize_twice.c
+)
+
+add_executable(paltest_pal_initialize_terminate_test2
+ ${SOURCES}
+)
+
+add_dependencies(paltest_pal_initialize_terminate_test2 coreclrpal)
+
+target_link_libraries(paltest_pal_initialize_terminate_test2
+ pthread
+ m
+ coreclrpal
+)
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/pal_initialize_twice.c b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/pal_initialize_twice.c
new file mode 100644
index 0000000000..fc460bc1ad
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/pal_initialize_twice.c
@@ -0,0 +1,41 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*=============================================================
+**
+** Source: pal_initialize_twice.c
+**
+** Purpose: Positive test of PAL_Initialize and PAL_Terminate APIs.
+** Calls PAL_Initialize twice to ensure that doing so
+** will not cause unexpected failures in the PAL.
+** Calls PAL_Terminate twice to clean up the PAL.
+**
+
+**
+**============================================================*/
+#include <palsuite.h>
+
+int __cdecl main(int argc, char *argv[])
+{
+ /* Initialize the PAL environment */
+ if (0 != (PAL_Initialize(argc, argv)))
+ {
+ return FAIL;
+ }
+
+ /* Try calling PAL_Initialize again - should just increment the init_count. */
+ if (0 != (PAL_Initialize(argc, argv)))
+ {
+ // Call terminate due to the first PAL initialization.
+ PAL_TerminateEx(FAIL);
+ return FAIL;
+ }
+
+ /* If both calls to PAL_Initialize succeed, then PAL_Terminate must be
+ called twice. The first call just decrements the init_count to 1. */
+
+ PAL_Terminate();
+ PAL_Terminate();
+ return PASS;
+}
diff --git a/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/testinfo.dat b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/testinfo.dat
new file mode 100644
index 0000000000..31ceaf054d
--- /dev/null
+++ b/src/pal/tests/palsuite/pal_specific/PAL_Initialize_Terminate/test2/testinfo.dat
@@ -0,0 +1,15 @@
+# Licensed to the .NET Foundation under one or more agreements.
+# The .NET Foundation licenses this file to you under the MIT license.
+# See the LICENSE file in the project root for more information.
+
+Version = 1.0
+Section = PAL_Specific
+Function = PAL_Initialize and PAL_Terminate
+Name = Positive test for calling PAL_Initialize twice
+TYPE = DEFAULT
+EXE1 = pal_initialize_twice
+Description
+=Test calling PAL_Initialize twice to initialize the PAL environment
+=and increment the init_count.
+=Test calling PAL_Terminate twice to decrement the init_count
+=and then clean up the PAL environment.