$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r73466 - in sandbox/e_float: boost/e_float libs/e_float/src/e_float libs/e_float/test/real libs/e_float/test/real/cases
From: e_float_at_[hidden]
Date: 2011-07-31 11:44:49
Author: christopher_kormanyos
Date: 2011-07-31 11:44:48 EDT (Sun, 31 Jul 2011)
New Revision: 73466
URL: http://svn.boost.org/trac/boost/changeset/73466
Log:
- Added additional ostream write function tests.
- Cleaned up the Lib/DLL digit check mechanism.
Text files modified: 
   sandbox/e_float/boost/e_float/e_float_base.hpp                                    |    19 +++--                                   
   sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp                         |     3                                         
   sandbox/e_float/libs/e_float/test/real/cases/test_case_0000y_write_to_ostream.cpp |    88 +++++++++++++++++++++++                 
   sandbox/e_float/libs/e_float/test/real/test_real.cpp                              |   146 ++++++++++++++++++++------------------- 
   4 files changed, 174 insertions(+), 82 deletions(-)
Modified: sandbox/e_float/boost/e_float/e_float_base.hpp
==============================================================================
--- sandbox/e_float/boost/e_float/e_float_base.hpp	(original)
+++ sandbox/e_float/boost/e_float/e_float_base.hpp	2011-07-31 11:44:48 EDT (Sun, 31 Jul 2011)
@@ -43,10 +43,6 @@
     #error The e_float type is undefined! Define the e_float type!
   #endif
 
-  // Create a loud link error if the e_float headers mismatch a Lib or DLL.
-  template<const INT32 digits10> INT32 digits_match_lib_dll(void);
-  template<> INT32 digits_match_lib_dll<E_FLOAT_DIGITS10>(void);
-
   class e_float_base
   {
   public:
@@ -163,15 +159,22 @@
     static e_float my_cyl_bessel_yn(const INT32, const e_float&);
 
   protected:
-    e_float_base()
-    {
-      digits_match_lib_dll_is_ok = (::digits_match_lib_dll<E_FLOAT_DIGITS10>() == E_FLOAT_DIGITS10);
-    }
+    inline e_float_base();
 
   private:
     static bool digits_match_lib_dll_is_ok;
   };
 
+  // Create a loud link error if the digits in the
+  // e_float headers mismatch those in a Lib or DLL.
+  template<const INT32 digits10> INT32 digits_match_lib_dll(void);        // There's no function body here.
+  template<> INT32 digits_match_lib_dll<e_float_base::ef_digits10>(void); // The function body is in e_float_base.cpp.
+
+  inline e_float_base::e_float_base()
+  {
+    digits_match_lib_dll_is_ok = (::digits_match_lib_dll<ef_digits10>() == ef_digits10);
+  }
+
   std::ostream& operator<<(std::ostream& os, const e_float_base& f);
   std::istream& operator>>(std::istream& is, e_float_base& f);
 
Modified: sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp
==============================================================================
--- sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp	(original)
+++ sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp	2011-07-31 11:44:48 EDT (Sun, 31 Jul 2011)
@@ -13,7 +13,8 @@
 
 bool e_float_base::digits_match_lib_dll_is_ok;
 
-// Create a loud link error if the e_float headers mismatch a Lib or DLL.
+// Create a loud link error if the digits in the
+// e_float headers mismatch those in a Lib or DLL.
 template<> INT32 digits_match_lib_dll<e_float_base::ef_digits10>(void) { return e_float_base::ef_digits10; }
 
 std::ostream& operator<<(std::ostream& os, const e_float_base& f)
Modified: sandbox/e_float/libs/e_float/test/real/cases/test_case_0000y_write_to_ostream.cpp
==============================================================================
--- sandbox/e_float/libs/e_float/test/real/cases/test_case_0000y_write_to_ostream.cpp	(original)
+++ sandbox/e_float/libs/e_float/test/real/cases/test_case_0000y_write_to_ostream.cpp	2011-07-31 11:44:48 EDT (Sun, 31 Jul 2011)
@@ -188,7 +188,8 @@
         str = ss.str();
         data.push_back(e_float(str));
         str_pi = ::make_pi_string(static_cast<std::size_t>(std::numeric_limits<e_float>::max_digits10));
-        my_test_result &= (str == (std::string("+") + (str_pi + std::string(1002u - str_pi.length(), static_cast<char>('0')))));
+        const std::string str_zero_fill(1002u - str_pi.length(), static_cast<char>('0'));
+        my_test_result &= (str == (std::string("+") + (str_pi + str_zero_fill)));
         ss.clear();
         ss.str("");
 
@@ -213,9 +214,94 @@
       }
     };
 
+    class TestCase_case_00007_write_os_floatfield_scientific : public TestCaseWriteToOstreamBase
+    {
+    public:
+      TestCase_case_00007_write_os_floatfield_scientific() { }
+      virtual ~TestCase_case_00007_write_os_floatfield_scientific() { }
+    private:
+      virtual const std::string& name(void) const
+      {
+        static const std::string str("TestCase_case_00007_write_os_floatfield_scientific");
+        return str;
+      }
+      virtual void e_float_test(std::vector<e_float>& data) const
+      {
+        data.clear();
+
+        my_test_result = true;
+
+        std::string str;
+        std::stringstream ss;
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(1) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("+3.1e+000"));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(2) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("+3.14e+000"));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(20) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("+3.14159265358979323846e+000"));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(std::numeric_limits<e_float>::digits10) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        std::string str_pi = ::make_pi_string(static_cast<std::size_t>(std::numeric_limits<e_float>::digits10));
+        my_test_result &= (str == (std::string("+") + (str_pi + std::string("e+000"))));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(1000) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        str_pi = ::make_pi_string(static_cast<std::size_t>(std::numeric_limits<e_float>::max_digits10));
+        const std::string str_zero_fill(1002u - str_pi.length(), static_cast<char>('0'));
+        my_test_result &= (str == (std::string("+") + ((str_pi + str_zero_fill) + std::string("e+000"))));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(20) << ef::pi() * e_float("1e43");
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("+3.14159265358979323846e+043"));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::setprecision(20) << -ef::pi() * e_float("1e-43");
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("-3.14159265358979323846e-043"));
+        ss.clear();
+        ss.str("");
+
+        ss << std::scientific << std::showpos << std::showpoint << std::uppercase << std::setprecision(20) << ef::pi();
+        str = ss.str();
+        data.push_back(e_float(str));
+        my_test_result &= (str == std::string("+3.14159265358979323846E+000"));
+        ss.clear();
+        ss.str("");
+      }
+    };
+
     bool test_case_00006_write_os_floatfield_fixed(const bool b_write_output)
     {
       return TestCase_case_00006_write_os_floatfield_fixed().execute(b_write_output);
     }
+    bool test_case_00007_write_os_floatfield_scientific(const bool b_write_output)
+    {
+      return TestCase_case_00007_write_os_floatfield_scientific().execute(b_write_output);
+    }
   }
 }
Modified: sandbox/e_float/libs/e_float/test/real/test_real.cpp
==============================================================================
--- sandbox/e_float/libs/e_float/test/real/test_real.cpp	(original)
+++ sandbox/e_float/libs/e_float/test/real/test_real.cpp	2011-07-31 11:44:48 EDT (Sun, 31 Jul 2011)
@@ -16,42 +16,43 @@
 {
   namespace real
   {
-    bool test_case_00001_overflow_mul_x           (const bool b_write_output);
-    bool test_case_00002_underflow_mul_x          (const bool b_write_output);
-    bool test_case_00003_overflow_x_mul_by_n      (const bool b_write_output);
-    bool test_case_00004_underflow_x_div_by_n     (const bool b_write_output);
-    bool test_case_00006_write_os_floatfield_fixed(const bool b_write_output);
-    bool test_case_00011_various_elem_math        (const bool b_write_output);
-    bool test_case_00021_bernoulli                (const bool b_write_output);
-    bool test_case_00051_factorial                (const bool b_write_output);
-    bool test_case_00052_factorial2               (const bool b_write_output);
-    bool test_case_00071_various_int_func         (const bool b_write_output);
-    bool test_case_00101_sin                      (const bool b_write_output);
-    bool test_case_00102_cos                      (const bool b_write_output);
-    bool test_case_00103_exp                      (const bool b_write_output);
-    bool test_case_00104_log                      (const bool b_write_output);
-    bool test_case_00105_sqrt                     (const bool b_write_output);
-    bool test_case_00106_rootn                    (const bool b_write_output);
-    bool test_case_00111_sin_small_x              (const bool b_write_output);
-    bool test_case_00112_cos_x_near_pi_half       (const bool b_write_output);
-    bool test_case_00113_atan_x_small_to_large    (const bool b_write_output);
-    bool test_case_00114_various_trig             (const bool b_write_output);
-    bool test_case_00115_various_elem_trans       (const bool b_write_output);
-    bool test_case_00121_sinh                     (const bool b_write_output);
-    bool test_case_00122_cosh                     (const bool b_write_output);
-    bool test_case_00123_tanh                     (const bool b_write_output);
-    bool test_case_00124_asinh                    (const bool b_write_output);
-    bool test_case_00125_acosh                    (const bool b_write_output);
-    bool test_case_00126_atanh                    (const bool b_write_output);
-    bool test_case_00201_gamma                    (const bool b_write_output);
-    bool test_case_00202_gamma_medium_x           (const bool b_write_output);
-    bool test_case_00203_gamma_small_x            (const bool b_write_output);
-    bool test_case_00204_gamma_tiny_x             (const bool b_write_output);
-    bool test_case_00205_gamma_near_neg_n         (const bool b_write_output);
-    bool test_case_00221_various_gamma_func       (const bool b_write_output);
-    bool test_case_00901_zeta_small_x             (const bool b_write_output);
-    bool test_case_00902_zeta_all_x               (const bool b_write_output);
-    bool test_case_00903_zeta_neg_x               (const bool b_write_output);
+    bool test_case_00001_overflow_mul_x                (const bool b_write_output);
+    bool test_case_00002_underflow_mul_x               (const bool b_write_output);
+    bool test_case_00003_overflow_x_mul_by_n           (const bool b_write_output);
+    bool test_case_00004_underflow_x_div_by_n          (const bool b_write_output);
+    bool test_case_00006_write_os_floatfield_fixed     (const bool b_write_output);
+    bool test_case_00007_write_os_floatfield_scientific(const bool b_write_output);
+    bool test_case_00011_various_elem_math             (const bool b_write_output);
+    bool test_case_00021_bernoulli                     (const bool b_write_output);
+    bool test_case_00051_factorial                     (const bool b_write_output);
+    bool test_case_00052_factorial2                    (const bool b_write_output);
+    bool test_case_00071_various_int_func              (const bool b_write_output);
+    bool test_case_00101_sin                           (const bool b_write_output);
+    bool test_case_00102_cos                           (const bool b_write_output);
+    bool test_case_00103_exp                           (const bool b_write_output);
+    bool test_case_00104_log                           (const bool b_write_output);
+    bool test_case_00105_sqrt                          (const bool b_write_output);
+    bool test_case_00106_rootn                         (const bool b_write_output);
+    bool test_case_00111_sin_small_x                   (const bool b_write_output);
+    bool test_case_00112_cos_x_near_pi_half            (const bool b_write_output);
+    bool test_case_00113_atan_x_small_to_large         (const bool b_write_output);
+    bool test_case_00114_various_trig                  (const bool b_write_output);
+    bool test_case_00115_various_elem_trans            (const bool b_write_output);
+    bool test_case_00121_sinh                          (const bool b_write_output);
+    bool test_case_00122_cosh                          (const bool b_write_output);
+    bool test_case_00123_tanh                          (const bool b_write_output);
+    bool test_case_00124_asinh                         (const bool b_write_output);
+    bool test_case_00125_acosh                         (const bool b_write_output);
+    bool test_case_00126_atanh                         (const bool b_write_output);
+    bool test_case_00201_gamma                         (const bool b_write_output);
+    bool test_case_00202_gamma_medium_x                (const bool b_write_output);
+    bool test_case_00203_gamma_small_x                 (const bool b_write_output);
+    bool test_case_00204_gamma_tiny_x                  (const bool b_write_output);
+    bool test_case_00205_gamma_near_neg_n              (const bool b_write_output);
+    bool test_case_00221_various_gamma_func            (const bool b_write_output);
+    bool test_case_00901_zeta_small_x                  (const bool b_write_output);
+    bool test_case_00902_zeta_all_x                    (const bool b_write_output);
+    bool test_case_00903_zeta_neg_x                    (const bool b_write_output);
   }
 }
 
@@ -59,42 +60,43 @@
 {
   bool test_ok = true;
 
-  test_ok &= test::real::test_case_00001_overflow_mul_x           (b_write_output);
-  test_ok &= test::real::test_case_00002_underflow_mul_x          (b_write_output);
-  test_ok &= test::real::test_case_00003_overflow_x_mul_by_n      (b_write_output);
-  test_ok &= test::real::test_case_00004_underflow_x_div_by_n     (b_write_output);
-  test_ok &= test::real::test_case_00006_write_os_floatfield_fixed(b_write_output);
-  test_ok &= test::real::test_case_00011_various_elem_math        (b_write_output);
-  test_ok &= test::real::test_case_00021_bernoulli                (b_write_output);
-  test_ok &= test::real::test_case_00051_factorial                (b_write_output);
-  test_ok &= test::real::test_case_00052_factorial2               (b_write_output);
-  test_ok &= test::real::test_case_00071_various_int_func         (b_write_output);
-  test_ok &= test::real::test_case_00101_sin                      (b_write_output);
-  test_ok &= test::real::test_case_00102_cos                      (b_write_output);
-  test_ok &= test::real::test_case_00103_exp                      (b_write_output);
-  test_ok &= test::real::test_case_00104_log                      (b_write_output);
-  test_ok &= test::real::test_case_00105_sqrt                     (b_write_output);
-  test_ok &= test::real::test_case_00106_rootn                    (b_write_output);
-  test_ok &= test::real::test_case_00111_sin_small_x              (b_write_output);
-  test_ok &= test::real::test_case_00112_cos_x_near_pi_half       (b_write_output);
-  test_ok &= test::real::test_case_00113_atan_x_small_to_large    (b_write_output);
-  test_ok &= test::real::test_case_00114_various_trig             (b_write_output);
-  test_ok &= test::real::test_case_00115_various_elem_trans       (b_write_output);
-  test_ok &= test::real::test_case_00121_sinh                     (b_write_output);
-  test_ok &= test::real::test_case_00122_cosh                     (b_write_output);
-  test_ok &= test::real::test_case_00123_tanh                     (b_write_output);
-  test_ok &= test::real::test_case_00124_asinh                    (b_write_output);
-  test_ok &= test::real::test_case_00125_acosh                    (b_write_output);
-  test_ok &= test::real::test_case_00126_atanh                    (b_write_output);
-  test_ok &= test::real::test_case_00201_gamma                    (b_write_output);
-  test_ok &= test::real::test_case_00202_gamma_medium_x           (b_write_output);
-  test_ok &= test::real::test_case_00203_gamma_small_x            (b_write_output);
-  test_ok &= test::real::test_case_00204_gamma_tiny_x             (b_write_output);
-  test_ok &= test::real::test_case_00205_gamma_near_neg_n         (b_write_output);
-  test_ok &= test::real::test_case_00221_various_gamma_func       (b_write_output);
-  test_ok &= test::real::test_case_00901_zeta_small_x             (b_write_output);
-  test_ok &= test::real::test_case_00902_zeta_all_x               (b_write_output);
-  test_ok &= test::real::test_case_00903_zeta_neg_x               (b_write_output);
+  test_ok &= test::real::test_case_00001_overflow_mul_x                (b_write_output);
+  test_ok &= test::real::test_case_00002_underflow_mul_x               (b_write_output);
+  test_ok &= test::real::test_case_00003_overflow_x_mul_by_n           (b_write_output);
+  test_ok &= test::real::test_case_00004_underflow_x_div_by_n          (b_write_output);
+  test_ok &= test::real::test_case_00006_write_os_floatfield_fixed     (b_write_output);
+  test_ok &= test::real::test_case_00007_write_os_floatfield_scientific(b_write_output);
+  test_ok &= test::real::test_case_00011_various_elem_math             (b_write_output);
+  test_ok &= test::real::test_case_00021_bernoulli                     (b_write_output);
+  test_ok &= test::real::test_case_00051_factorial                     (b_write_output);
+  test_ok &= test::real::test_case_00052_factorial2                    (b_write_output);
+  test_ok &= test::real::test_case_00071_various_int_func              (b_write_output);
+  test_ok &= test::real::test_case_00101_sin                           (b_write_output);
+  test_ok &= test::real::test_case_00102_cos                           (b_write_output);
+  test_ok &= test::real::test_case_00103_exp                           (b_write_output);
+  test_ok &= test::real::test_case_00104_log                           (b_write_output);
+  test_ok &= test::real::test_case_00105_sqrt                          (b_write_output);
+  test_ok &= test::real::test_case_00106_rootn                         (b_write_output);
+  test_ok &= test::real::test_case_00111_sin_small_x                   (b_write_output);
+  test_ok &= test::real::test_case_00112_cos_x_near_pi_half            (b_write_output);
+  test_ok &= test::real::test_case_00113_atan_x_small_to_large         (b_write_output);
+  test_ok &= test::real::test_case_00114_various_trig                  (b_write_output);
+  test_ok &= test::real::test_case_00115_various_elem_trans            (b_write_output);
+  test_ok &= test::real::test_case_00121_sinh                          (b_write_output);
+  test_ok &= test::real::test_case_00122_cosh                          (b_write_output);
+  test_ok &= test::real::test_case_00123_tanh                          (b_write_output);
+  test_ok &= test::real::test_case_00124_asinh                         (b_write_output);
+  test_ok &= test::real::test_case_00125_acosh                         (b_write_output);
+  test_ok &= test::real::test_case_00126_atanh                         (b_write_output);
+  test_ok &= test::real::test_case_00201_gamma                         (b_write_output);
+  test_ok &= test::real::test_case_00202_gamma_medium_x                (b_write_output);
+  test_ok &= test::real::test_case_00203_gamma_small_x                 (b_write_output);
+  test_ok &= test::real::test_case_00204_gamma_tiny_x                  (b_write_output);
+  test_ok &= test::real::test_case_00205_gamma_near_neg_n              (b_write_output);
+  test_ok &= test::real::test_case_00221_various_gamma_func            (b_write_output);
+  test_ok &= test::real::test_case_00901_zeta_small_x                  (b_write_output);
+  test_ok &= test::real::test_case_00902_zeta_all_x                    (b_write_output);
+  test_ok &= test::real::test_case_00903_zeta_neg_x                    (b_write_output);
 
   return test_ok;
 }