From 239b00c26cc3f24b7d9e334de8ac1bee849e05b1 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 8 Aug 2023 15:08:14 +0200 Subject: Drop PCPP, GlueGen exclusively uses JCPP; Adopt test case Test{P->J}CPP --- .../gluegen/test/junit/generation/TestJCPP.java | 132 ++++++++++++++++++ .../gluegen/test/junit/generation/TestPCPP.java | 151 --------------------- .../test/junit/generation/cpptest-included.h | 2 + .../jogamp/gluegen/test/junit/generation/cpptest.h | 138 +++++++++++++++++++ .../test/junit/generation/pcpptest-included.h | 2 - .../gluegen/test/junit/generation/pcpptest.h | 138 ------------------- 6 files changed, 272 insertions(+), 291 deletions(-) create mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java delete mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java create mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h create mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h delete mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h delete mode 100644 src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h (limited to 'src/junit') diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java b/src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java new file mode 100644 index 0000000..61cb01a --- /dev/null +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java @@ -0,0 +1,132 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package com.jogamp.gluegen.test.junit.generation; + +import com.jogamp.common.os.AndroidVersion; +import com.jogamp.gluegen.jcpp.JCPP; +import com.jogamp.junit.util.SingletonJunitCase; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.Collections; + +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * serves mainly as entry point for debugging purposes. + * @author Sven Gothel, Michael Bien + */ +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestJCPP extends SingletonJunitCase { + + @BeforeClass + public static void init() { + if(AndroidVersion.isAvailable) { + // JCPP is n/a on Android - GlueGen Runtime only + setTestSupported(false); + } + } + + @Test + public void pcppMacroDefinitionTestWithoutPragmaOnce() throws FileNotFoundException, IOException { + pcppMacroDefinitionTest(false); + } + + @Test + public void pcppMacroDefinitionTestWithPragmaOnce() throws FileNotFoundException, IOException { + pcppMacroDefinitionTest(true); + } + + public void pcppMacroDefinitionTest(final boolean pragmaOnce) throws FileNotFoundException, IOException { + final String folderpath = BuildEnvironment.gluegenRoot + "/src/junit/com/jogamp/gluegen/test/junit/generation"; + final JCPP pp = new JCPP(Collections.singletonList(folderpath), false, false, pragmaOnce); + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + pp.setOut(output); + + final String filename = "cpptest.h"; + final String filepath = folderpath + "/" + filename ; + pp.run(new BufferedReader(new FileReader(filepath)), filename); + + final String expected = "#line 1 \"cpptest.h\" 1"+ + ""+ + "cl_char GOOD_A;"+ + "int GOOD_B;"+ + "int GOOD_C;"+ + ""+ + " int TEST_D_GOOD;"+ + ""+ + "/***"+ + " ** STD API file .."+ + " */"+ + ""+ + "int GOOD_F_1;"+ + "int GOOD_F_2;"+ + ""+ + "int GOOD_G;"+ + "#line 1\""+folderpath+"/cpptest-included.h\" 1"+ + "" + ; + + + output.flush(); + final String result = output.toString(); + output.close(); + + System.err.println("Expected: "); + System.err.println("-------------------------------"); + System.err.println(killWhitespace(expected)); + System.err.println("-------------------------------"); + System.err.println(); + System.err.println("Result: "); + System.err.println("-------------------------------"); + System.err.println(killWhitespace(result)); + System.err.println("-------------------------------"); + System.err.println(); + + assertEquals(killWhitespace(expected), killWhitespace(result)); + + } + + private String killWhitespace(final String a) { + return a.replaceAll("\\p{javaWhitespace}+", ""); + } + + public static void main(final String args[]) throws IOException { + final String tstname = TestJCPP.class.getName(); + org.junit.runner.JUnitCore.main(tstname); + } +} diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java b/src/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java deleted file mode 100644 index d2209e4..0000000 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java +++ /dev/null @@ -1,151 +0,0 @@ -/** - * Copyright 2010 JogAmp Community. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of JogAmp Community. - */ - -package com.jogamp.gluegen.test.junit.generation; - -import com.jogamp.common.os.AndroidVersion; -import com.jogamp.gluegen.pcpp.PCPP; -import com.jogamp.junit.util.SingletonJunitCase; - -import java.io.BufferedReader; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.Collections; - -import org.junit.BeforeClass; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * serves mainly as entry point for debugging purposes. - * @author Sven Gothel, Michael Bien - */ -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TestPCPP extends SingletonJunitCase { - - @BeforeClass - public static void init() { - if(AndroidVersion.isAvailable) { - // PCPP is n/a on Android - GlueGen Runtime only - setTestSupported(false); - } - } - - @Test - public void pcppMacroDefinitionTestWithoutPragmaOnce() throws FileNotFoundException, IOException { - pcppMacroDefinitionTest(false); - } - - @Test - public void pcppMacroDefinitionTestWithPragmaOnce() throws FileNotFoundException, IOException { - pcppMacroDefinitionTest(true); - } - - public void pcppMacroDefinitionTest(final boolean pragmaOnce) throws FileNotFoundException, IOException { - final String folderpath = BuildEnvironment.gluegenRoot + "/src/junit/com/jogamp/gluegen/test/junit/generation"; - final PCPP pp = new PCPP(Collections.singletonList(folderpath), false, false, pragmaOnce); - final ByteArrayOutputStream output = new ByteArrayOutputStream(); - pp.setOut(output); - - final String filename = "pcpptest.h"; - final String filepath = folderpath + "/" + filename ; - pp.run(new BufferedReader(new FileReader(filepath)), filename); - - final String expected = "# 1 \"pcpptest.h\""+ - "# define CL_SCHAR_MIN (-127-1)"+ - "# define __YES__ 1"+ - "# 16 \"pcpptest.h\""+ - "# 26 \"pcpptest.h\""+ - "# 36 \"pcpptest.h\""+ - " cl_char GOOD_A;"+ - " int GOOD_B;"+ - " int GOOD_C;"+ - "# 40 \"pcpptest.h\""+ - "#54\"pcpptest.h\""+ - " int TEST_D_GOOD;"+ - "#60\"pcpptest.h\""+ - "#70\"pcpptest.h\""+ - "#77\"pcpptest.h\""+ - "#105\"pcpptest.h\""+ - "#123\"pcpptest.h\""+ - " int GOOD_F_1;"+ - " int GOOD_F_2;"+ - "#126\"pcpptest.h\""+ - " int GOOD_G;"+ - "#128\"pcpptest.h\""+ - "#130\"pcpptest.h\""+ - "#134\"pcpptest.h\""+ - "#1\""+folderpath+"/pcpptest-included.h\""+ - "# define EXAMPLE 42"+ - "#134\"pcpptest.h\""+ - (!pragmaOnce ? - ( - "#1\""+folderpath+"/pcpptest-included.h\""+ - "# define EXAMPLE 42"+ - "#135\"pcpptest.h\"" - ): - "" - )+ - "#137\"pcpptest.h\""+ - "#139\"pcpptest.h\"" - ; - - - output.flush(); - final String result = output.toString(); - output.close(); - - System.err.println("Expected: "); - System.err.println("-------------------------------"); - System.err.println(killWhitespace(expected)); - System.err.println("-------------------------------"); - System.err.println(); - System.err.println("Result: "); - System.err.println("-------------------------------"); - System.err.println(killWhitespace(result)); - System.err.println("-------------------------------"); - System.err.println(); - - assertEquals(killWhitespace(expected), killWhitespace(result)); - - } - - private String killWhitespace(final String a) { - return a.replaceAll("\\p{javaWhitespace}+", ""); - } - - public static void main(final String args[]) throws IOException { - final String tstname = TestPCPP.class.getName(); - org.junit.runner.JUnitCore.main(tstname); - } -} diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h b/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h new file mode 100644 index 0000000..8dbe022 --- /dev/null +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h @@ -0,0 +1,2 @@ +#pragma once +#define EXAMPLE 42 \ No newline at end of file diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h b/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h new file mode 100644 index 0000000..5cda9a5 --- /dev/null +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h @@ -0,0 +1,138 @@ + +#define CL_SCHAR_MIN (-127-1) + +#define __YES__ 1 + +#if defined( __YES__ ) + #define TEST_A(_x) GOOD_A +#elif defined( _WIN32) && (_MSC_VER) + #define TEST_A(_x) ERR_A_1 +#elif defined( __unix__) || ( __sun__ ) + #define TEST_A(_x) ERR_A_2 +#else + #define TEST_A(_x) ERR_A_3 +#endif + +#if defined( __NO__ ) + #define TEST_B ERR_B_1 +#elif defined( __YES__) + #define TEST_B GOOD_B +#elif defined( __unix__) || ( __sun__ ) + #define TEST_B ERR_B_2 +#else + #define TEST_B ERR_B_3 +#endif + +#if defined( __NO__ ) + #define TEST_C ERR_C_1 +#elif defined( __NO__ ) + #define TEST_C ERR_C_2 +#elif defined( __unix__) || ( __sun__ ) + #define TEST_C ERR_C_3 +#else + #define TEST_C GOOD_C +#endif + +cl_char TEST_A(2); +int TEST_B; +int TEST_C; + +#ifndef __NO__ + #ifdef __YES__ + #ifdef CGDLL_EXPORTS + #define ERR_D_1 + #elif defined (CG_LIB) + #define ERR_D_2 + #else + #define GOOD_D + #endif + #else + #define ERR_D_3 + #endif +#endif + +#ifdef GOOD_D + int TEST_D_GOOD; +#elif + int TEST_D_ERROR; +#endif + +#if (defined(__NO__) && defined(__NOPE__)) + #define TEST_E_VAL ((long) 0x7FFFFFFFFFFFFFFFLL) +#else + #define TEST_E_VAL ((long) 0x7FFFFFFFFFFFFFFFLL) +#endif + +/*** + ** STD API file .. + */ + +#ifndef __test_h_ +#define __test_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined( __NANA__ ) + #if defined( __MINGW64__ ) + #include + #elif defined( __NONO__ ) + #include + #else + #include + #endif + #if defined( __GNUC__ ) + #include + #else + #include + #endif +#else + #if defined( __MINGW64__ ) + #include + #elif defined( __NONO__) + #include + #else + #define TEST_F_VAL1 GOOD_F_1 + #endif + #if defined( __GNUC__ ) + #include + #else + #define TEST_F_VAL2 GOOD_F_2 + #endif +#endif + +#if defined( __YES__ ) + #if defined( __NONO__) + #include + #elif defined( __YES__) + #define TEST_G_VAL GOOD_G + #else + #include + #endif +#else + #if defined( __MINGW64__ ) + #include + #elif defined( __NONO__) + #include + #else + #include + #endif +#endif + +int TEST_F_VAL1; +int TEST_F_VAL2; + +int TEST_G_VAL; + +#warning "Test warning with quotes - they must have quotes" + +#ifdef __cplusplus +} +#endif + +#include +#include + +#endif /* __test_h_ */ + diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h b/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h deleted file mode 100644 index 8dbe022..0000000 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#define EXAMPLE 42 \ No newline at end of file diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h b/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h deleted file mode 100644 index 31b80c3..0000000 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h +++ /dev/null @@ -1,138 +0,0 @@ - -#define CL_SCHAR_MIN (-127-1) - -#define __YES__ 1 - -#if defined( __YES__ ) - #define TEST_A(_x) GOOD_A -#elif defined( _WIN32) && (_MSC_VER) - #define TEST_A(_x) ERR_A_1 -#elif defined( __unix__) || ( __sun__ ) - #define TEST_A(_x) ERR_A_2 -#else - #define TEST_A(_x) ERR_A_3 -#endif - -#if defined( __NO__ ) - #define TEST_B ERR_B_1 -#elif defined( __YES__) - #define TEST_B GOOD_B -#elif defined( __unix__) || ( __sun__ ) - #define TEST_B ERR_B_2 -#else - #define TEST_B ERR_B_3 -#endif - -#if defined( __NO__ ) - #define TEST_C ERR_C_1 -#elif defined( __NO__ ) - #define TEST_C ERR_C_2 -#elif defined( __unix__) || ( __sun__ ) - #define TEST_C ERR_C_3 -#else - #define TEST_C GOOD_C -#endif - -cl_char TEST_A(2); -int TEST_B; -int TEST_C; - -#ifndef __NO__ - #ifdef __YES__ - #ifdef CGDLL_EXPORTS - #define ERR_D_1 - #elif defined (CG_LIB) - #define ERR_D_2 - #else - #define GOOD_D - #endif - #else - #define ERR_D_3 - #endif -#endif - -#ifdef GOOD_D - int TEST_D_GOOD; -#elif - int TEST_D_ERROR; -#endif - -#if (defined(__NO__) && defined(__NOPE__)) - #define TEST_E_VAL ((long) 0x7FFFFFFFFFFFFFFFLL) -#else - #define TEST_E_VAL ((long) 0x7FFFFFFFFFFFFFFFLL) -#endif - -/*** - ** STD API file .. - */ - -#ifndef __test_h_ -#define __test_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined( __NANA__ ) - #if defined( __MINGW64__ ) - #include - #elif defined( __NONO__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - #include - #else - #include - #endif -#else - #if defined( __MINGW64__ ) - #include - #elif defined( __NONO__) - #include - #else - #define TEST_F_VAL1 GOOD_F_1 - #endif - #if defined( __GNUC__ ) - #include - #else - #define TEST_F_VAL2 GOOD_F_2 - #endif -#endif - -#if defined( __YES__ ) - #if defined( __NONO__) - #include - #elif defined( __YES__) - #define TEST_G_VAL GOOD_G - #else - #include - #endif -#else - #if defined( __MINGW64__ ) - #include - #elif defined( __NONO__) - #include - #else - #include - #endif -#endif - -int TEST_F_VAL1; -int TEST_F_VAL2; - -int TEST_G_VAL; - -#warning "Test warning with quotes - they must have quotes" - -#ifdef __cplusplus -} -#endif - -#include -#include - -#endif /* __test_h_ */ - -- cgit v1.2.3