GRINS-0.7.0
string_utils.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2016 Paul T. Bauman, Roy H. Stogner
7 // Copyright (C) 2010-2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include "grins_config.h"
26 
27 #ifdef GRINS_HAVE_CPPUNIT
28 
29 #include <cppunit/extensions/HelperMacros.h>
30 #include <cppunit/TestCase.h>
31 
32 #include <string>
33 #include <vector>
34 #include <iostream>
35 #include <limits>
36 
37 #include "grins/string_utils.h"
38 
39 namespace GRINSTesting
40 {
41  class StringUtilitiesTest : public CppUnit::TestCase
42  {
43  public:
45 
49 
51 
52  public:
53 
55  {
56  {
57  std::string str_1("N->N2");
58  std::vector<std::string> test_1_split_exact(2);
59  test_1_split_exact[0] = std::string("N");
60  test_1_split_exact[1] = std::string("N2");
61 
62  std::vector<std::string> str_1_split;
63  GRINS::StringUtilities::split_string( str_1, "->", str_1_split);
64  this->test_string( str_1_split, test_1_split_exact );
65  }
66 
67  {
68  std::string str_2("N+C(s)->CN");
69  std::vector<std::string> test_2_split_exact(2);
70  test_2_split_exact[0] = std::string("N+C(s)");
71  test_2_split_exact[1] = std::string("CN");
72 
73  std::vector<std::string> str_2_split;
74  GRINS::StringUtilities::split_string( str_2, "->", str_2_split);
75  this->test_string( str_2_split, test_2_split_exact );
76  }
77 
78  {
79  std::string str_3("u:v:w:T:p:w_N:w_N2:p0");
80  std::vector<std::string> test_3_split_exact(8);
81  test_3_split_exact[0] = std::string("u");
82  test_3_split_exact[1] = std::string("v");
83  test_3_split_exact[2] = std::string("w");
84  test_3_split_exact[3] = std::string("T");
85  test_3_split_exact[4] = std::string("p");
86  test_3_split_exact[5] = std::string("w_N");
87  test_3_split_exact[6] = std::string("w_N2");
88  test_3_split_exact[7] = std::string("p0");
89 
90  std::vector<std::string> str_3_split;
91  GRINS::StringUtilities::split_string( str_3, ":", str_3_split);
92  this->test_string( str_3_split, test_3_split_exact );
93  }
94 
95  {
96  std::string str_4("u v w T p w_N w_N2 p0");
97  std::vector<std::string> test_4_split_exact(8);
98  test_4_split_exact[0] = std::string("u");
99  test_4_split_exact[1] = std::string("v");
100  test_4_split_exact[2] = std::string("w");
101  test_4_split_exact[3] = std::string("T");
102  test_4_split_exact[4] = std::string("p");
103  test_4_split_exact[5] = std::string("w_N");
104  test_4_split_exact[6] = std::string("w_N2");
105  test_4_split_exact[7] = std::string("p0");
106 
107  std::vector<std::string> str_4_split;
108  GRINS::StringUtilities::split_string( str_4, " ", str_4_split);
109  this->test_string( str_4_split, test_4_split_exact );
110  }
111  }
112 
114  {
115  std::string one = "1";
116  int ione = GRINS::StringUtilities::string_to_T<int>(one);
117  unsigned int uione = GRINS::StringUtilities::string_to_T<unsigned int>(one);
118  CPPUNIT_ASSERT_EQUAL(1,ione);
119  CPPUNIT_ASSERT_EQUAL((unsigned int)1,uione);
120 
121  std::string tenp1 = "10.1";
122  double dtenp1 = GRINS::StringUtilities::string_to_T<double>(tenp1);
123  CPPUNIT_ASSERT_DOUBLES_EQUAL(10.1,
124  dtenp1,
125  std::numeric_limits<double>::epsilon());
126  }
127 
129  {
130  std::string one_exact = "1";
131  std::string tenp1_exact = "10.1";
132 
133  {
134  std::string one_test = GRINS::StringUtilities::T_to_string<int>(1);
135  CPPUNIT_ASSERT_EQUAL(one_exact,one_test);
136  }
137 
138  {
139  std::string one_test = GRINS::StringUtilities::T_to_string<unsigned int>(1);
140  CPPUNIT_ASSERT_EQUAL(one_exact,one_test);
141  }
142 
143  {
144  std::string tenp1_test = GRINS::StringUtilities::T_to_string<double>(10.1);
145  CPPUNIT_ASSERT_EQUAL(tenp1_exact,tenp1_test);
146  }
147  }
148 
149  private:
150 
151  void test_string( const std::vector<std::string>& test,
152  const std::vector<std::string>& exact )
153  {
154  CPPUNIT_ASSERT_EQUAL(test.size(), exact.size() );
155 
156  for( unsigned int s = 0; s < test.size(); s++ )
157  CPPUNIT_ASSERT_EQUAL( test[s], exact[s] );
158  }
159 
160  };
161 
162  CPPUNIT_TEST_SUITE_REGISTRATION( StringUtilitiesTest );
163 
164 } // end namespace GRINSTesting
165 
166 #endif // GRINS_HAVE_CPPUNIT
CPPUNIT_TEST_SUITE_REGISTRATION(AntiochAirNASA9ThermoTest)
int test(ChemicalMixture &chem_mixture)
void test_string(const std::vector< std::string > &test, const std::vector< std::string > &exact)
Definition: string_utils.C:151
CPPUNIT_TEST_SUITE(StringUtilitiesTest)
void split_string(const std::string &input, const std::string &delimiter, std::vector< std::string > &results)
Definition: string_utils.C:31

Generated on Thu Jun 2 2016 21:52:28 for GRINS-0.7.0 by  doxygen 1.8.10