OSDN Git Service

add Board::replace
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Mon, 22 Mar 2004 14:03:28 +0000 (14:03 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Mon, 22 Mar 2004 14:03:28 +0000 (14:03 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@928 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/board.cpp
kita/src/libkita/board.h
kita/src/libkita/tests/boardtest.cpp
kita/src/libkita/tests/boardtest.h

index 4e7fbd2..01d5006 100644 (file)
@@ -182,6 +182,21 @@ const QString& Board::getName( const QString& boardURL )
     return Board::getByURL( boardURL ) ->name();
 }
 
+void Board::replace( const QString& fromURL, const QString& toURL )
+{
+    QDictIterator<Kita::Board> it( *m_boardDict );
+    for( ; it.current(); ++it ) {
+        QString url = it.currentKey();
+        Kita::Board* board = it.current();
+        if ( url.find( fromURL ) == 0 ) {
+            m_boardDict->remove( url );
+            url = url.replace( 0, fromURL.length(), toURL );
+            board->m_boardURL = url;
+            m_boardDict->insert( url, board );
+        }
+    }
+}
+
 NullBoard::NullBoard()
 {}
 
index 4bdac73..d30df21 100644 (file)
@@ -48,6 +48,7 @@ namespace Kita
         // Factory method
         static Board* getByURL( const QString& boardURL );
         static void setName( const QString& boardURL, const QString& boardName );
+        static void replace( const QString& fromURL, const QString& toURL );
 
         static const QString& getName( const QString& boardURL );
     };
index 9a206db..906dc21 100644 (file)
@@ -74,3 +74,19 @@ void BoardTest::testStaticName()
     CPPUNIT_ASSERT_EQUAL( QString( "Unix" ), Kita::Board::getName( "http://pc.2ch.net/unix/" ) );
     CPPUNIT_ASSERT_EQUAL( QString::null, Kita::Board::getName( QString::null ) );
 }
+
+void BoardTest::testReplace()
+{
+    Kita::Board::replace( QString( "http://pc.2ch.net/linux/" ), QString( "http://pc3.2ch.net/linux/" ) );
+    Kita::Board* board = Kita::Board::getByURL( "http://pc3.2ch.net/linux/" );
+    
+    CPPUNIT_ASSERT_EQUAL( QString( "linux" ), board->id() );
+    CPPUNIT_ASSERT_EQUAL( QString( "Linux" ), board->name() );
+    CPPUNIT_ASSERT_EQUAL( QString( "http://pc3.2ch.net/linux/subject.txt" ),
+                          board->subjectTxtURL().url() );
+    CPPUNIT_ASSERT_EQUAL( QString( "http://pc3.2ch.net/linux/"),
+                          board->url() );
+    CPPUNIT_ASSERT_EQUAL( QString( "Linux" ), Kita::Board::getName( "http://pc3.2ch.net/linux/" ) );
+
+    Kita::Board::replace( QString( "http://pc3.2ch.net/linux/" ), QString( "http://pc.2ch.net/linux/" ) );
+}
index 3b23e3c..be6ced4 100644 (file)
@@ -23,6 +23,7 @@ class BoardTest : public CppUnit::TestFixture {
     CPPUNIT_TEST( testSubjectTxtURL );
     CPPUNIT_TEST( testURL );
     CPPUNIT_TEST( testStaticName );
+    CPPUNIT_TEST( testReplace );
     CPPUNIT_TEST_SUITE_END();
 
     Kita::Board *m_normal, *m_share1, *m_share2, *m_share3, *m_null;
@@ -36,6 +37,7 @@ public:
     void testSubjectTxtURL();
     void testURL();
     void testStaticName();
+    void testReplace();
 };
 
 #endif