THRIFT-5590 Haxe complex inits
Client: hx
Patch: Jens Geyer

This closes #2622
diff --git a/lib/haxe/test/HaxeTests.hxproj b/lib/haxe/test/HaxeTests.hxproj
index 7ad2392..839917b 100644
--- a/lib/haxe/test/HaxeTests.hxproj
+++ b/lib/haxe/test/HaxeTests.hxproj
@@ -26,7 +26,7 @@
     <option noInlineOnDebug="False" />
     <option mainClass="Main" />
     <option enabledebug="False" />
-    <option additional="--macro include('org.apache.thrift', true)&#xA;--macro include('thrift', true)" />
+    <option additional="--macro include('org.apache.thrift', true)&#xA;--macro include('thrift', true)&#xA;--macro include('constantsDemo', true)" />
   </build>
   <!-- haxelib libraries -->
   <haxelib>
@@ -54,6 +54,7 @@
   </hiddenPaths>
   <!-- Executed before build -->
   <preBuildCommand>thrift -r -gen haxe  ../../../test/ThriftTest.thrift
+thrift -r -gen haxe  ../../../test/ConstantsDemo.thrift
 thrift -r -gen haxe  ../../../contrib/async-test/aggr.thrift
 thrift -r -gen haxe  ../../../lib/rb/benchmark/Benchmark.thrift</preBuildCommand>
   <!-- Executed after build -->
diff --git a/lib/haxe/test/cpp.hxml b/lib/haxe/test/cpp.hxml
index 73848a8..28e1a01 100644
--- a/lib/haxe/test/cpp.hxml
+++ b/lib/haxe/test/cpp.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #CPP target
 -cpp bin
 
diff --git a/lib/haxe/test/csharp.hxml b/lib/haxe/test/csharp.hxml
index 4c34b0d..6ddfd07 100644
--- a/lib/haxe/test/csharp.hxml
+++ b/lib/haxe/test/csharp.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #CSHARP target
 -cs bin/Test.exe
 
diff --git a/lib/haxe/test/flash.hxml b/lib/haxe/test/flash.hxml
index 8b17631..130ab78 100644
--- a/lib/haxe/test/flash.hxml
+++ b/lib/haxe/test/flash.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #Flash target
 -swf bin/Test.swf
 
diff --git a/lib/haxe/test/java.hxml b/lib/haxe/test/java.hxml
index c947159..b72d99f 100644
--- a/lib/haxe/test/java.hxml
+++ b/lib/haxe/test/java.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #Java target
 -java bin/Test.jar
 
diff --git a/lib/haxe/test/javascript.hxml b/lib/haxe/test/javascript.hxml
index 18d9964..496e780 100644
--- a/lib/haxe/test/javascript.hxml
+++ b/lib/haxe/test/javascript.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #JavaScript target
 -js bin/Test.js
 
diff --git a/lib/haxe/test/make_all.bat b/lib/haxe/test/make_all.bat
index 0314e18..8a063dd 100644
--- a/lib/haxe/test/make_all.bat
+++ b/lib/haxe/test/make_all.bat
@@ -27,6 +27,7 @@
 
 rem # invoke Thrift comnpiler
 thrift -r -gen haxe  ..\..\..\test\ThriftTest.thrift
+thrift -r -gen haxe  ..\..\..\test\ConstantsDemo.thrift
 thrift -r -gen haxe  ..\..\..\contrib\async-test\aggr.thrift
 thrift -r -gen haxe  ..\..\..\lib\rb\benchmark\Benchmark.thrift
 if errorlevel 1 goto STOP
diff --git a/lib/haxe/test/neko.hxml b/lib/haxe/test/neko.hxml
index 2db70c8..eed22bd 100644
--- a/lib/haxe/test/neko.hxml
+++ b/lib/haxe/test/neko.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #neko target
 -neko bin/Test.n
 
diff --git a/lib/haxe/test/php.hxml b/lib/haxe/test/php.hxml
index 9fc23b6..3af54da 100644
--- a/lib/haxe/test/php.hxml
+++ b/lib/haxe/test/php.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #PHP target
 -php bin/php/
 #--php-front Main-debug.php
diff --git a/lib/haxe/test/python.hxml b/lib/haxe/test/python.hxml
index 4d6a133..58eb3cb 100644
--- a/lib/haxe/test/python.hxml
+++ b/lib/haxe/test/python.hxml
@@ -25,6 +25,11 @@
 #this class wil be used as entry point for your app.
 -main Main
 
+# forced compile of all source files
+--macro include('org.apache.thrift', true)
+--macro include('thrift', true)
+--macro include('constantsDemo', true)
+
 #Python target
 -python bin/Test.py
 
diff --git a/lib/haxe/test/src/ConstantsTest.hx b/lib/haxe/test/src/ConstantsTest.hx
new file mode 100644
index 0000000..d0041e4
--- /dev/null
+++ b/lib/haxe/test/src/ConstantsTest.hx
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package;
+
+import haxe.Int64;
+
+import org.apache.thrift.*;
+import org.apache.thrift.protocol.*;
+import org.apache.thrift.transport.*;
+import org.apache.thrift.server.*;
+import org.apache.thrift.meta_data.*;
+
+import constantsDemo.*;  // generated code
+
+
+class ConstantsTest extends TestBase {
+
+    public static function Run(server : Bool) : Void
+    {
+        TestBase.Expect( ConstantsDemoConstants.myInt == 3, "myInt = 3");
+        TestBase.Expect( ConstantsDemoConstants.hex_const == 0x0001F, "hex_const = 31");
+        TestBase.Expect( ConstantsDemoConstants.negative_hex_constant == -0x0001F, "negative_hex_constant = -31");
+        TestBase.Expect( ConstantsDemoConstants.GEN_ME == -3523553, "GEN_ME = -3523553");
+        TestBase.Expect( ConstantsDemoConstants.GEn_DUB == 325.532, "GEn_DUB = 325.532");
+        TestBase.Expect( ConstantsDemoConstants.GEn_DU == 85.2355, "GEn_DU = 85.2355");
+        TestBase.Expect( ConstantsDemoConstants.GEN_STRING == "asldkjasfd", "GEN_STRING = \"asldkjasfd\"");
+        TestBase.Expect( ConstantsDemoConstants.e10 == 1e+10, "e10 = 1e+10");
+        TestBase.Expect( ConstantsDemoConstants.e11 == -1e+10, "e11 = -1e+10");
+        TestBase.Expect( ConstantsDemoConstants.GEN_UUID == "00000000-4444-CCCC-ffff-0123456789ab", "GEN_UUID = \"00000000-4444-CCCC-ffff-0123456789ab\"");
+
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAP.get(35532) == 233, "GEN_MAP.get(35532) == 233");
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAP.get(43523) == 853, "GEN_MAP.get(43523) == 853");
+        
+        TestBase.Expect( ConstantsDemoConstants.GEN_LIST.length == 3, "GEN_LIST.size() == 3");
+        TestBase.Expect( ConstantsDemoConstants.GEN_LIST.join("/") == "235235/23598352/3253523", "GEN_LIST elements");
+
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAPMAP.get(235).get(532) == 53255, "GEN_MAPMAP.get(235).get(532) == 53255");
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAPMAP.get(235).get(235) == 235, "GEN_MAPMAP.get(235).get(235) == 235");
+
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAP2.get("hello") == 233, "GEN_MAP2.get(\"hello\") == 233");
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAP2.get("lkj98d") == 853, "GEN_MAP2.get(\"lkj98d\") == 853");
+        TestBase.Expect( ConstantsDemoConstants.GEN_MAP2.get('lkjsdf') == 98325, "GEN_MAP2.get('lkjsdf') == 98325");
+        
+        TestBase.Expect( ConstantsDemoConstants.GEN_THING.hello == 325, "GEN_THING.hello == 325");
+        TestBase.Expect( ConstantsDemoConstants.GEN_THING.goodbye == 325352, "GEN_THING.goodbye == 325352");
+
+        TestBase.Expect( ConstantsDemoConstants.GEN_WHAT.get(35).hello == 325, "GEN_WHAT.get(35).hello == 325");
+        TestBase.Expect( ConstantsDemoConstants.GEN_WHAT.get(35).goodbye == 325352, "GEN_WHAT.get(35).goodbye == 325352");
+
+        TestBase.Expect( ConstantsDemoConstants.GEN_SET.size == 2, "GEN_SET.size() == 2");
+        TestBase.Expect( ConstantsDemoConstants.GEN_SET.contains(235), "GEN_SET.contains(235)");  // added twice, but this is a set
+        TestBase.Expect( ConstantsDemoConstants.GEN_SET.contains(53235), "GEN_SET.contains(53235)");
+    }
+
+}
+
+
diff --git a/lib/haxe/test/src/Main.hx b/lib/haxe/test/src/Main.hx
index 6c262d7..e04af78 100644
--- a/lib/haxe/test/src/Main.hx
+++ b/lib/haxe/test/src/Main.hx
@@ -31,6 +31,7 @@
 enum WhatTests {
     Normal;
     Multiplex;
+    Constants;
 }
 
 class Main
@@ -56,6 +57,8 @@
                         server = true;
                     case "multiplex" :
                         tests = Multiplex;
+                    case "constants" :
+                        tests = Constants;
                     default:
                 throw 'Invalid argument "$arg"\n'+CMDLINEHELP;
                 }
@@ -76,6 +79,8 @@
                     StreamTest.Run(server);
                 case Multiplex:
                     MultiplexTest.Run(server);
+                case Constants:
+                    ConstantsTest.Run(server);
                 default:
                     throw "Unhandled test mode $tests";
             }
diff --git a/lib/haxe/test/src/MultiplexTest.hx b/lib/haxe/test/src/MultiplexTest.hx
index 3e2786d..74fa357 100644
--- a/lib/haxe/test/src/MultiplexTest.hx
+++ b/lib/haxe/test/src/MultiplexTest.hx
@@ -48,7 +48,7 @@
     public function new() {
     }
 
-	public function fibonacci(n : haxe.Int32) : haxe.Int32 {
+    public function fibonacci(n : haxe.Int32) : haxe.Int32 {
         trace('Benchmark.fibonacci($n)');
         var next : Int;
         var prev   = 0;
@@ -60,7 +60,7 @@
             result = next;
             --n;
         }
-		return result;
+        return result;
     }
 }
 
diff --git a/lib/haxe/test/src/StreamTest.hx b/lib/haxe/test/src/StreamTest.hx
index 9b8706a..4744272 100644
--- a/lib/haxe/test/src/StreamTest.hx
+++ b/lib/haxe/test/src/StreamTest.hx
@@ -48,7 +48,7 @@
 
     public static function WriteData() : Xtruct
     {
-		var config : TConfiguration = new TConfiguration();
+        var config : TConfiguration = new TConfiguration();
         var stream : TStream = new TFileStream( tmpfile, CreateNew);
         var trans : TTransport = new TStreamTransport( null, stream, config);
         var prot = new TJSONProtocol( trans);
@@ -62,7 +62,7 @@
 
     public static function ReadData() : Xtruct
     {
-		var config : TConfiguration = new TConfiguration();
+        var config : TConfiguration = new TConfiguration();
         var stream : TStream = new TFileStream( tmpfile, Read);
         var trans : TTransport = new TStreamTransport( stream, null, config);
         var prot = new TJSONProtocol( trans);
diff --git a/lib/haxe/test/src/TestBase.hx b/lib/haxe/test/src/TestBase.hx
index 1232773..865a801 100644
--- a/lib/haxe/test/src/TestBase.hx
+++ b/lib/haxe/test/src/TestBase.hx
@@ -40,6 +40,7 @@
         if( ! expr) {
             throw ('Test "$info" failed at '+pos.methodName+' in '+pos.fileName+':'+pos.lineNumber);
         }
+        trace('Test "$info" - OK');
     }
 
 }