|  | @@ -1,7 +1,9 @@
 | 
	
		
			
				|  |  |  #include "a2functional.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include <cppunit/extensions/HelperMacros.h>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #include <string>
 | 
	
		
			
				|  |  |  #include <numeric>
 | 
	
		
			
				|  |  | -#include <cppunit/extensions/HelperMacros.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace aria2 {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -10,11 +12,17 @@ class a2functionalTest:public CppUnit::TestFixture {
 | 
	
		
			
				|  |  |    CPPUNIT_TEST_SUITE(a2functionalTest);
 | 
	
		
			
				|  |  |    CPPUNIT_TEST(testMemFunSh);
 | 
	
		
			
				|  |  |    CPPUNIT_TEST(testAdopt2nd);
 | 
	
		
			
				|  |  | +  CPPUNIT_TEST(testStrjoin);
 | 
	
		
			
				|  |  | +  CPPUNIT_TEST(testStrconcat);
 | 
	
		
			
				|  |  | +  CPPUNIT_TEST(testStrappend);
 | 
	
		
			
				|  |  |    CPPUNIT_TEST_SUITE_END();
 | 
	
		
			
				|  |  |  public:
 | 
	
		
			
				|  |  |    void testMemFunSh();
 | 
	
		
			
				|  |  |    void testAdopt2nd();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  void testStrjoin();
 | 
	
		
			
				|  |  | +  void testStrconcat();
 | 
	
		
			
				|  |  | +  void testStrappend();
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  |    class Greeting {
 | 
	
		
			
				|  |  |    public:
 | 
	
		
			
				|  |  |      virtual ~Greeting() {}
 | 
	
	
		
			
				|  | @@ -63,4 +71,33 @@ void a2functionalTest::testAdopt2nd()
 | 
	
		
			
				|  |  |  		       adopt2nd(std::plus<std::string>(), mem_fun_sh(&Greeting::sayGreeting))("A Japanese said:", greeting));
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +void a2functionalTest::testStrjoin()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  std::vector<std::string> v;
 | 
	
		
			
				|  |  | +  CPPUNIT_ASSERT_EQUAL(std::string(""), strjoin(v.begin(), v.end(), " "));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  v.push_back("A");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  CPPUNIT_ASSERT_EQUAL(std::string("A"), strjoin(v.begin(), v.end(), " "));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  v.push_back("hero");
 | 
	
		
			
				|  |  | +  v.push_back("is");
 | 
	
		
			
				|  |  | +  v.push_back("lonely");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  CPPUNIT_ASSERT_EQUAL(std::string("A hero is lonely"),
 | 
	
		
			
				|  |  | +		       strjoin(v.begin(), v.end(), " "));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void a2functionalTest::testStrconcat()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  CPPUNIT_ASSERT_EQUAL(std::string("X=3"), strconcat("X=", "3"));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void a2functionalTest::testStrappend()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  std::string str = "X=";
 | 
	
		
			
				|  |  | +  strappend(str, "3", ",Y=", "5");
 | 
	
		
			
				|  |  | +  CPPUNIT_ASSERT_EQUAL(std::string("X=3,Y=5"), str);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  } // namespace aria2
 |