switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Format.test.cc
index 996fe38..cbb7859 100644 (file)
@@ -1,24 +1,29 @@
 // $Id$
 //
-// Copyright (C) 2009 
+// Copyright (C) 2009
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-//     Stefan Bund <g0dil@berlios.de>
 //
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.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://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief Format.test unit tests */
 #include <iomanip>
 #include "Format.hh"
 #include <boost/cstdint.hpp>
+#include "String.hh"
 
 #include <senf/Utils/auto_unit_test.hh>
 #include <boost/test/test_tools.hpp>
 
 #define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
-BOOST_AUTO_UNIT_TEST(formatEng)
+SENF_AUTO_UNIT_TEST(formatEng)
 {
     std::stringstream ss;
 
@@ -85,9 +91,9 @@ BOOST_AUTO_UNIT_TEST(formatEng)
     CheckFormat( (1.345e-3, 3.456),          "0.0+-3.5" );
 
 #   undef CheckFormat
-    
+
     // From documentation
-    
+
     {
         std::stringstream ss;
         ss << senf::format::eng(1.23);
@@ -102,7 +108,7 @@ BOOST_AUTO_UNIT_TEST(formatEng)
 
     {
         std::stringstream ss;
-        ss << std::setw(25) << std::setprecision(5) << std::showpos << std::uppercase 
+        ss << std::setw(25) << std::setprecision(5) << std::showpos << std::uppercase
            << std::internal << senf::format::eng(12345,67);
         BOOST_CHECK_EQUAL( ss.str(), "+       12.35+-000.07E+03" );
     }
@@ -112,12 +118,29 @@ BOOST_AUTO_UNIT_TEST(formatEng)
         ss << std::showbase << senf::format::eng(12345,67);
         BOOST_CHECK_EQUAL( ss.str(), "12.345+-0.067k" );
     }
+
+    // class member formatting
+    BOOST_CHECK_EQUAL( senf::str(senf::format::eng(12345, 67)
+                                 .setw()
+                                 .setprecision(5)
+                                 .setfill('0')
+                                 .showbase()
+                                 .showpos()
+                                 .internal()),
+                       "+012.35+-000.07k" );
+
+    BOOST_CHECK_EQUAL( senf::str(senf::format::eng(12.345, 67)
+                                 .setw()
+                                 .setprecision(5)
+                                 .showpoint()
+                                 .uppercase()),
+                       "  12.35+-067.00E+00" );
 }
 
-BOOST_AUTO_UNIT_TEST(dumpint)
+SENF_AUTO_UNIT_TEST(dumpint)
 {
     std::stringstream ss;
-    
+
 #   define CheckFormat(v,s)                                             \
         {                                                               \
             ss.str("");                                                 \
@@ -131,7 +154,32 @@ BOOST_AUTO_UNIT_TEST(dumpint)
 #   undef CheckFormat
 }
 
-///////////////////////////////cc.e////////////////////////////////////////
+namespace {
+    void f1(std::ostream & os) {
+        senf::format::IndentHelper indent;
+        os << indent << "f1\n";
+    }
+    void f2(std::ostream & os) {
+        senf::format::IndentHelper indent;
+        os << indent << "f2_1\n";
+        f1( os);
+        os << indent << "f2_2\n";
+        indent.increase();
+        os << indent << "f2_3\n";
+    }
+}
+SENF_AUTO_UNIT_TEST(indent)
+{
+    std::stringstream ss;
+    f2(ss);
+    BOOST_CHECK_EQUAL( ss.str(),
+            "  f2_1\n"
+            "    f1\n"
+            "  f2_2\n"
+            "    f2_3\n");
+}
+
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 
 \f