You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2007/08/13 17:01:39 UTC

svn commit: r565369 - in /activemq/activemq-cpp/trunk/src/decaf/src: main/decaf/lang/ test/ test/decaf/lang/

Author: tabish
Date: Mon Aug 13 08:01:38 2007
New Revision: 565369

URL: http://svn.apache.org/viewvc?view=rev&rev=565369
Log:
http://issues.apache.org/activemq/browse/AMQCPP-103

Adding a System class

Added:
    activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.cpp
    activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.h
Modified:
    activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp
    activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h
    activemq/activemq-cpp/trunk/src/decaf/src/test/Makefile.am
    activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.cpp
    activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.h
    activemq/activemq-cpp/trunk/src/decaf/src/test/testRegistry.cpp

Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp Mon Aug 13 08:01:38 2007
@@ -18,10 +18,21 @@
 #include "System.h"
 
 #include <decaf/lang/exceptions/NullPointerException.h>
+#include <decaf/lang/exceptions/IllegalArgumentException.h>
+#include <decaf/lang/exceptions/RuntimeException.h>
 #include <decaf/util/Date.h>
+#include <decaf/util/StringTokenizer.h>
+#include <apr.h>
 #include <apr_errno.h>
 #include <apr_env.h>
 
+#ifdef APR_HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <cstdlib>
+
+using namespace std;
 using namespace decaf;
 using namespace decaf::lang;
 using namespace decaf::util;
@@ -36,6 +47,26 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
+void System::unsetenv( const std::string& name ) throw ( lang::Exception ) {
+
+    apr_status_t result = APR_SUCCESS;
+
+    // Clear the value, errors are thrown out as an exception
+    result = apr_env_delete( name.c_str(), aprPool.getAprPool() );
+    aprPool.cleanup();
+
+    if( result != APR_SUCCESS ) {
+
+        char buffer[256] = {0};
+
+        throw NullPointerException(
+            __FILE__, __LINE__,
+            "System::getenv - ",
+            apr_strerror( result, buffer, 255 ) );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
 std::string System::getenv( const std::string& name ) throw ( Exception ) {
 
     char* value = NULL;
@@ -90,3 +121,120 @@
 long long System::currentTimeMillis() {
     return Date::getCurrentTimeMilliseconds();
 }
+
+////////////////////////////////////////////////////////////////////////////////
+Map<string, string> System::getenv() throw ( Exception ) {
+
+    Map<string, string> values;
+    StringTokenizer tokenizer( "" );
+    string key = "";
+    string value = "";
+    int tokens = 0;
+    char** env = getEnvArray();
+    if( env == NULL ) {
+        throw RuntimeException(
+            __FILE__, __LINE__,
+            "System::getenv - Failed to enumerate the environment." );
+    }
+
+    for( int i = 0; *(env + i); i++ ){
+        tokenizer.reset( env[i], "=" );
+        delete env[i];  // Clean them as we go
+
+        tokens = tokenizer.countTokens();
+
+        if( tokens == 1 ) {
+            // special case, no value set, store empty string as value
+            key = tokenizer.nextToken();
+            value = string("");
+        } else if( tokens > 2 ) {
+            // special case: first equals delimits the key value, the rest are
+            // part of the variable
+            std::string envVal( environ[i] );
+            int pos = envVal.find( "=" );
+            key = envVal.substr( 0, pos );
+            value = envVal.substr( pos + 1, string::npos );
+        } else if( tokens == 0 ) {
+            // Odd case, got a string with no equals sign.
+            throw IllegalArgumentException(
+                __FILE__, __LINE__,
+                "System::getenv - Invalid env string. %s",
+                environ[i] );
+        } else {
+            // Normal case.
+            key = tokenizer.nextToken();
+            value = tokenizer.nextToken();
+        }
+
+        // Store the env var
+        values.setValue( key, value );
+    }
+
+    // cleanup
+    delete [] env;
+
+    return values;
+}
+
+#if defined(_WIN32)
+
+#include <windows.h>
+
+////////////////////////////////////////////////////////////////////////////////
+char** System::getEnvArray() {
+
+    char** buffer = NULL;
+    int count = 0;
+    LPTSTR lpszVars;
+    LPVOID lpvEnv;
+
+    lpvEnv = GetEnvironmentStrings();
+    if( NULL == lpvEnv ){
+        return NULL;
+    }
+
+    lpszVars = (LPTSTR)lpvEnv;
+    while( *lpszVars != NULL ) {
+        count++;
+        lpszVars += strlen(lpszVars)+1;
+    }
+
+    // allocate buffer first dimension
+    buffer = new char*[count+1];
+    buffer[count] = NULL;
+
+    lpszVars = (LPTSTR)lpvEnv;
+    int index = 0;
+    while( *lpszVars != NULL ) {
+        buffer[++index] = strdup( lpszVars );
+        lpszVars += strlen(lpszVars)+1;
+    }
+
+    FreeEnvironmentStrings( (LPTCH)lpvEnv );
+    return buffer;
+}
+
+#else
+
+////////////////////////////////////////////////////////////////////////////////
+char** System::getEnvArray() {
+
+    char** buffer = NULL;
+    int count = 0;
+
+    for( int i = 0; *(environ + i); i++ ){
+        count++;
+    }
+
+    // allocate buffer first dimension
+    buffer = new char*[count+1];
+    buffer[count] = NULL;
+
+    for( int i = 0; *(environ + i); i++ ){
+        buffer[i] = strdup( environ[i] );
+    }
+
+    return buffer;
+}
+
+#endif

Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h Mon Aug 13 08:01:38 2007
@@ -19,6 +19,7 @@
 #define _DECAF_LANG_SYSTEM_H_
 
 #include <decaf/util/Config.h>
+#include <decaf/util/Map.h>
 #include <decaf/lang/Exception.h>
 #include <decaf/internal/AprPool.h>
 #include <string>
@@ -39,6 +40,15 @@
     public:  // Static Methods
 
         /**
+         * Enumerates the system environment and returns a map of env variable
+         * names to the string values they hold.
+         * @return A Map of all environment variables.
+         * @throw Exception if an error occurs
+         */
+        static util::Map<std::string, std::string> getenv()
+            throw ( lang::Exception );
+
+        /**
          * Reads an environment value from the system and returns it as a
          * string object
          * @param name - the env var to read
@@ -49,6 +59,14 @@
             throw ( lang::Exception );
 
         /**
+         * Clears a set env value if one is set.
+         * @param name - the env var to clear
+         * @throws an Exception if an error occurs while reading the Env.
+         */
+        static void unsetenv( const std::string& name )
+            throw ( lang::Exception );
+
+        /**
          * Sets the specified system property to the value given
          * @param name - name of the env val to set
          * @param value - value to assign to name
@@ -61,6 +79,16 @@
          * @returns the current system time in Milliseconds
          */
         static long long currentTimeMillis();
+
+    private:
+
+        /**
+         * Enumerates the environment and return an array of strings
+         * with the values.  Caller owns the array.  The array is terminated
+         * by an element that holds the value NULL
+         * @returns caller owned array of env name=value paris.
+         */
+        static char** getEnvArray();
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/decaf/src/test/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/Makefile.am?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/Makefile.am Mon Aug 13 08:01:38 2007
@@ -27,6 +27,7 @@
   decaf/lang/ThreadTest.cpp \
   decaf/lang/ExceptionTest.cpp \
   decaf/lang/MathTest.cpp \
+  decaf/lang/SystemTest.cpp \
   decaf/io/BufferedInputStreamTest.cpp \
   decaf/io/BufferedOutputStreamTest.cpp \
   decaf/io/ByteArrayInputStreamTest.cpp \
@@ -62,6 +63,7 @@
   decaf/lang/ThreadTest.h \
   decaf/lang/ExceptionTest.h \
   decaf/lang/MathTest.h \
+  decaf/lang/SystemTest.h \
   decaf/io/BufferedInputStreamTest.h \
   decaf/io/BufferedOutputStreamTest.h \
   decaf/io/ByteArrayInputStreamTest.h \

Modified: activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.cpp?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.cpp (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.cpp Mon Aug 13 08:01:38 2007
@@ -276,12 +276,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 void FloatTest::test_parseFloatLDecaf_lang_String() {
 
-//    CPPUNIT_ASSERT_MESSAGE( "Incorrect float returned, expected zero.",
-//            0.0 == Float::parseFloat("7.0064923216240853546186479164495e-46"));
-//    CPPUNIT_ASSERT_MESSAGE("Incorrect float returned, expected minimum float.",
-//            Float::MIN_VALUE ==
-//            Float::parseFloat("7.0064923216240853546186479164496e-46") );
-//
+    CPPUNIT_ASSERT_MESSAGE( "Incorrect float returned, expected zero.",
+            0.0 == Float::parseFloat("7.0064923216240853546186479164495e-46"));
+    CPPUNIT_ASSERT_MESSAGE("Incorrect float returned, expected minimum float.",
+            Float::MIN_VALUE ==
+            Float::parseFloat("7.0064923216240853546186479164496e-46") );
+
 //    doTestCompareRawBits(
 //            "0.000000000000000000000000000000000000011754942807573642917278829910357665133228589927589904276829631184250030649651730385585324256680905818939208984375",
 //            0x800000, "1.17549435E-38");
@@ -351,25 +351,26 @@
 //            expectedStringFor1_17eN38To38[38 + 5]);
 //    doTestCompareRawBits("-1.1754943508222875e+6", rawBitsFor1_17eN38To38[38 + 6],
 //            expectedStringFor1_17eN38To38[38 + 6]);
-//
-//    for (int i = 7; i < 39; i++) {
+
+//    for( int i = 7; i < 39; i++ ) {
 //        std::string testString;
-//        testString = "-1.1754943508222875e+" + i;
-//        doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 + i],
-//                expectedStringFor1_17eN38To38[38 + i]);
+//        testString = "-1.1754943508222875e+" + Integer::toString( i );
+//        doTestCompareRawBits( testString,
+//                              rawBitsFor1_17eN38To38[38 + i],
+//                              expectedStringFor1_17eN38To38[38 + i] );
 //    }
-//
+
     // Test denormalized floats (floats with exponents <= -38
-//    doTestCompareRawBits("1.1012984643248170E-45", 1, "1.4E-45");
-//    doTestCompareRawBits("-1.1012984643248170E-45", 0x80000001, "-1.4E-45");
-//    doTestCompareRawBits("1.0E-45", 1, "1.4E-45");
-//    doTestCompareRawBits("-1.0E-45", 0x80000001, "-1.4E-45");
-//    doTestCompareRawBits("0.9E-45", 1, "1.4E-45");
-//    doTestCompareRawBits("-0.9E-45", 0x80000001, "-1.4E-45");
-//    doTestCompareRawBits("4.203895392974451e-45", 3, "4.2E-45");
-//    doTestCompareRawBits("-4.203895392974451e-45", 0x80000003, "-4.2E-45");
-//    doTestCompareRawBits("0.004E-45", 0, "0.0");
-//    doTestCompareRawBits("-0.004E-45", 0x80000000, "-0.0");
+    doTestCompareRawBits("1.1012984643248170E-45", 1, "1.4E-45");
+    doTestCompareRawBits("-1.1012984643248170E-45", 0x80000001, "-1.4E-45");
+    doTestCompareRawBits("1.0E-45", 1, "1.4E-45");
+    doTestCompareRawBits("-1.0E-45", 0x80000001, "-1.4E-45");
+    doTestCompareRawBits("0.9E-45", 1, "1.4E-45");
+    doTestCompareRawBits("-0.9E-45", 0x80000001, "-1.4E-45");
+    doTestCompareRawBits("4.203895392974451e-45", 3, "4.2E-45");
+    doTestCompareRawBits("-4.203895392974451e-45", 0x80000003, "-4.2E-45");
+    doTestCompareRawBits("0.004E-45", 0, "0.0");
+    doTestCompareRawBits("-0.004E-45", 0x80000000, "-0.0");
 
     // Test for large floats close to and greater than 3.4028235E38 and
     // -3.4028235E38

Modified: activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.h?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.h (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/FloatTest.h Mon Aug 13 08:01:38 2007
@@ -29,20 +29,21 @@
         CPPUNIT_TEST_SUITE( FloatTest );
         CPPUNIT_TEST( test_ConstructorF );
         CPPUNIT_TEST( test_ConstructorString );
-        CPPUNIT_TEST( test_byteValue );
-        CPPUNIT_TEST( test_compare );
-        CPPUNIT_TEST( test_doubleValue );
-        CPPUNIT_TEST( test_floatToIntBitsF );
-        CPPUNIT_TEST( test_floatToRawIntBitsF );
-        CPPUNIT_TEST( test_floatValue );
-        CPPUNIT_TEST( test_intBitsToFloatI );
-        CPPUNIT_TEST( test_intValue );
-        CPPUNIT_TEST( test_isInfinite );
-        CPPUNIT_TEST( test_isInfiniteF );
-        CPPUNIT_TEST( test_isNaN );
-        CPPUNIT_TEST( test_isNaNF );
-        CPPUNIT_TEST( test_longValue );
-        CPPUNIT_TEST( test_parseFloatLDecaf_lang_String );
+//        CPPUNIT_TEST( test_byteValue );
+//        CPPUNIT_TEST( test_compare );
+//        CPPUNIT_TEST( test_doubleValue );
+//        CPPUNIT_TEST( test_floatToIntBitsF );
+//        CPPUNIT_TEST( test_floatToRawIntBitsF );
+//        CPPUNIT_TEST( test_floatValue );
+//        CPPUNIT_TEST( test_intBitsToFloatI );
+//        CPPUNIT_TEST( test_intValue );
+//        CPPUNIT_TEST( test_isInfinite );
+//        CPPUNIT_TEST( test_isInfiniteF );
+//        CPPUNIT_TEST( test_isNaN );
+//        CPPUNIT_TEST( test_isNaNF );
+//        CPPUNIT_TEST( test_longValue );
+//        CPPUNIT_TEST( test_parseFloatLDecaf_lang_String );
+
 //        CPPUNIT_TEST( test_byteValue );
 //        CPPUNIT_TEST( test_byteValue );
 //        CPPUNIT_TEST( test_byteValue );

Added: activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.cpp?view=auto&rev=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.cpp (added)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.cpp Mon Aug 13 08:01:38 2007
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+#include "SystemTest.h"
+
+#include <decaf/lang/System.h>
+#include <decaf/util/Map.h>
+
+using namespace std;
+using namespace decaf;
+using namespace decaf::util;
+using namespace decaf::lang;
+
+////////////////////////////////////////////////////////////////////////////////
+SystemTest::SystemTest() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void SystemTest::test_getenv() {
+
+    CPPUNIT_ASSERT( System::getenv( "PATH" ) != "" );
+
+    try {
+        System::getenv( "PATH_ASDFGHJKL" );
+        CPPUNIT_ASSERT( false );
+    } catch (...) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void SystemTest::test_getenv2() {
+
+    Map<std::string, std::string> values = System::getenv();
+
+    CPPUNIT_ASSERT( values.size() != 0 );
+    CPPUNIT_ASSERT( values.containsKey( "PATH" ) );
+    CPPUNIT_ASSERT( !values.containsKey( "PATH_ASDFGHJKL" ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void SystemTest::test_setenv() {
+
+    Map<std::string, std::string> values1 = System::getenv();
+    CPPUNIT_ASSERT( !values1.containsKey( "PATH_ASDFGHJKL" ) );
+    System::setenv( "PATH_ASDFGHJKL", "test" );
+    Map<std::string, std::string> values2 = System::getenv();
+    CPPUNIT_ASSERT( values2.containsKey( "PATH_ASDFGHJKL" ) );
+    System::unsetenv( "PATH_ASDFGHJKL" );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void SystemTest::test_unsetenv() {
+
+    Map<std::string, std::string> values1 = System::getenv();
+    CPPUNIT_ASSERT( !values1.containsKey( "PATH_ASDFGHJKL" ) );
+    System::setenv( "PATH_ASDFGHJKL", "test" );
+    Map<std::string, std::string> values2 = System::getenv();
+    CPPUNIT_ASSERT( values2.containsKey( "PATH_ASDFGHJKL" ) );
+    System::unsetenv( "PATH_ASDFGHJKL" );
+    Map<std::string, std::string> values3 = System::getenv();
+    CPPUNIT_ASSERT( !values3.containsKey( "PATH_ASDFGHJKL" ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void SystemTest::test_currentTimeMillis() {
+    CPPUNIT_ASSERT( System::currentTimeMillis() != 0 );
+}

Added: activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.h?view=auto&rev=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.h (added)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/decaf/lang/SystemTest.h Mon Aug 13 08:01:38 2007
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+#ifndef _DECAF_LANG_SYSTEMTEST_H_
+#define _DECAF_LANG_SYSTEMTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace decaf{
+namespace lang{
+
+    class SystemTest : public CppUnit::TestFixture {
+
+        CPPUNIT_TEST_SUITE( SystemTest );
+        CPPUNIT_TEST( test_getenv );
+        CPPUNIT_TEST( test_getenv2 );
+        CPPUNIT_TEST( test_setenv );
+        CPPUNIT_TEST( test_unsetenv );
+        CPPUNIT_TEST( test_currentTimeMillis );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+        SystemTest();
+        virtual ~SystemTest() {}
+
+        void test_getenv();
+        void test_getenv2();
+        void test_setenv();
+        void test_unsetenv();
+        void test_currentTimeMillis();
+
+    };
+
+}}
+
+#endif /*_DECAF_LANG_SYSTEMTEST_H_*/

Modified: activemq/activemq-cpp/trunk/src/decaf/src/test/testRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/test/testRegistry.cpp?view=diff&rev=565369&r1=565368&r2=565369
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/test/testRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/test/testRegistry.cpp Mon Aug 13 08:01:38 2007
@@ -45,14 +45,16 @@
 //CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::IntegerTest );
 //#include <decaf/lang/LongTest.h>
 //CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::LongTest );
-#include <decaf/lang/FloatTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::FloatTest );
-#include <decaf/lang/DoubleTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::DoubleTest );
+//#include <decaf/lang/FloatTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::FloatTest );
+//#include <decaf/lang/DoubleTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::DoubleTest );
 //#include <decaf/lang/ExceptionTest.h>
 //CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ExceptionTest );
 //#include <decaf/lang/ThreadTest.h>
 //CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadTest );
+#include <decaf/lang/SystemTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::SystemTest );
 //
 //#include <decaf/net/SocketFactoryTest.h>
 //CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketFactoryTest );