summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rwxr-xr-xjava/allTests.py1
-rw-r--r--java/build.xml1
-rw-r--r--java/test/Slice/macros/Client.java54
-rw-r--r--java/test/Slice/macros/Test.ice60
-rwxr-xr-xjava/test/Slice/macros/run.py28
5 files changed, 144 insertions, 0 deletions
diff --git a/java/allTests.py b/java/allTests.py
index ba28b83b8f0..c63013af76c 100755
--- a/java/allTests.py
+++ b/java/allTests.py
@@ -27,6 +27,7 @@ import TestUtil
tests = [
("Slice/generation", ["once"]),
("Slice/keyword", ["once"]),
+ ("Slice/macros", ["once"]),
("Slice/structure", ["once"]),
("IceUtil/inputUtil", ["once"]),
("IceUtil/fileLock", ["once"]),
diff --git a/java/build.xml b/java/build.xml
index a0ae57fa2df..c3d30a0bd35 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -471,6 +471,7 @@
<include name="test/IceBox/configuration/Test.ice" />
<include name="test/IceSSL/configuration/Test.ice" />
<include name="test/Slice/keyword/Key.ice" />
+ <include name="test/Slice/macros/Test.ice" />
<include name="test/Slice/structure/Test.ice" />
</fileset>
</slice2java>
diff --git a/java/test/Slice/macros/Client.java b/java/test/Slice/macros/Client.java
new file mode 100644
index 00000000000..3ba7ac80f9c
--- /dev/null
+++ b/java/test/Slice/macros/Client.java
@@ -0,0 +1,54 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package test.Slice.macros;
+
+import test.Slice.macros.Test.Default;
+import test.Slice.macros.Test.NoDefault;
+import test.Slice.macros.Test.JavaOnly;
+
+public class Client
+{
+ private static void test(boolean b)
+ {
+ if(!b)
+ {
+ throw new RuntimeException();
+ }
+ }
+
+ public static void
+ main(String[] args)
+ {
+ int status = 0;
+ try
+ {
+ System.out.print("Testing Slice predefined macros... ");
+ Default d = new Default();
+ test(d.x == 10);
+ test(d.y == 10);
+
+ NoDefault nd = new NoDefault();
+ test(nd.x != 10);
+ test(nd.y != 10);
+
+ JavaOnly c = new JavaOnly();
+ test(c.lang.equals("java"));
+ test(c.version == Ice.Util.intVersion());
+ System.out.println("ok");
+ }
+ catch(Exception ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+ System.gc();
+ System.exit(status);
+ }
+}
diff --git a/java/test/Slice/macros/Test.ice b/java/test/Slice/macros/Test.ice
new file mode 100644
index 00000000000..57d90703e6a
--- /dev/null
+++ b/java/test/Slice/macros/Test.ice
@@ -0,0 +1,60 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#pragma once
+
+[["java:package:test.Slice.macros"]]
+
+//
+// This macro sets the default value only when compile with slice2java
+//
+#if defined(ICE_COMPILER) && (ICE_COMPILER == ICE_SLICE2JAVA)
+# define DEFAULT(X) = X
+#else
+# define DEFAULT(X) /**/
+#endif
+
+//
+// This macro sets the default value only when not compile with slice2java
+//
+#if defined(ICE_COMPILER) && (ICE_COMPILER != ICE_SLICE2JAVA)
+# define NODEFAULT(X) = X
+#else
+# define NODEFAULT(X) /**/
+#endif
+
+
+
+module Test
+{
+
+class Default
+{
+ int x DEFAULT(10);
+ int y DEFAULT(10);
+};
+
+class NoDefault
+{
+ int x NODEFAULT(10);
+ int y NODEFAULT(10);
+};
+
+//
+// This class is only defined when compile with slice2java.
+//
+#if defined(ICE_COMPILER) && (ICE_COMPILER == ICE_SLICE2JAVA)
+class JavaOnly
+{
+ string lang DEFAULT("java");
+ int version DEFAULT(ICE_VERSION);
+};
+#endif
+
+};
diff --git a/java/test/Slice/macros/run.py b/java/test/Slice/macros/run.py
new file mode 100755
index 00000000000..97426047aec
--- /dev/null
+++ b/java/test/Slice/macros/run.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import os, sys
+
+path = [ ".", "..", "../..", "../../..", "../../../.." ]
+head = os.path.dirname(sys.argv[0])
+if len(head) > 0:
+ path = [os.path.join(head, p) for p in path]
+path = [os.path.abspath(p) for p in path if os.path.exists(os.path.join(p, "scripts", "TestUtil.py")) ]
+if len(path) == 0:
+ raise RuntimeError("can't find toplevel directory!")
+sys.path.append(os.path.join(path[0], "scripts"))
+import TestUtil
+
+sys.stdout.write("starting client... ")
+sys.stdout.flush()
+clientProc = TestUtil.startClient("test.Slice.macros.Client",startReader=False)
+print("ok")
+clientProc.startReader()
+clientProc.waitTestSuccess()