mirror of https://github.com/aria2/aria2
Added swap for UriStruct
parent
871819af59
commit
55d00d047c
22
src/uri.cc
22
src/uri.cc
|
@ -77,6 +77,28 @@ UriStruct& UriStruct::operator=(const UriStruct& c)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UriStruct::swap(UriStruct& other)
|
||||||
|
{
|
||||||
|
using std::swap;
|
||||||
|
if(this != &other) {
|
||||||
|
swap(protocol, other.protocol);
|
||||||
|
swap(host, other.host);
|
||||||
|
swap(port, other.port);
|
||||||
|
swap(dir, other.dir);
|
||||||
|
swap(file, other.file);
|
||||||
|
swap(query, other.query);
|
||||||
|
swap(username, other.username);
|
||||||
|
swap(password, other.password);
|
||||||
|
swap(hasPassword, other.hasPassword);
|
||||||
|
swap(ipv6LiteralAddress, other.ipv6LiteralAddress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void swap(UriStruct& lhs, UriStruct& rhs)
|
||||||
|
{
|
||||||
|
lhs.swap(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
bool parse(UriStruct& result, const std::string& uri)
|
bool parse(UriStruct& result, const std::string& uri)
|
||||||
{
|
{
|
||||||
// http://user:password@aria2.sourceforge.net:80/dir/file?query#fragment
|
// http://user:password@aria2.sourceforge.net:80/dir/file?query#fragment
|
||||||
|
|
|
@ -60,8 +60,11 @@ struct UriStruct {
|
||||||
~UriStruct();
|
~UriStruct();
|
||||||
|
|
||||||
UriStruct& operator=(const UriStruct& c);
|
UriStruct& operator=(const UriStruct& c);
|
||||||
|
void swap(UriStruct& other);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void swap(UriStruct& lhs, UriStruct& rhs);
|
||||||
|
|
||||||
// Splits URI uri into components and stores them into result. On
|
// Splits URI uri into components and stores them into result. On
|
||||||
// success returns true. Otherwise returns false and result is
|
// success returns true. Otherwise returns false and result is
|
||||||
// undefined.
|
// undefined.
|
||||||
|
|
|
@ -34,6 +34,7 @@ class UriTest:public CppUnit::TestFixture {
|
||||||
CPPUNIT_TEST(testSetUri_ipv6);
|
CPPUNIT_TEST(testSetUri_ipv6);
|
||||||
CPPUNIT_TEST(testInnerLink);
|
CPPUNIT_TEST(testInnerLink);
|
||||||
CPPUNIT_TEST(testConstruct);
|
CPPUNIT_TEST(testConstruct);
|
||||||
|
CPPUNIT_TEST(testSwap);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -62,6 +63,7 @@ public:
|
||||||
void testSetUri_ipv6();
|
void testSetUri_ipv6();
|
||||||
void testInnerLink();
|
void testInnerLink();
|
||||||
void testConstruct();
|
void testConstruct();
|
||||||
|
void testSwap();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -470,6 +472,19 @@ void UriTest::testConstruct()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UriTest::testSwap()
|
||||||
|
{
|
||||||
|
UriStruct us1;
|
||||||
|
CPPUNIT_ASSERT(parse(us1, "http://u1:p1@[::1]/dir1/file1?k1=v1"));
|
||||||
|
UriStruct us2;
|
||||||
|
CPPUNIT_ASSERT(parse(us2, "ftp://host2/dir2/file2?k2=v2"));
|
||||||
|
us1.swap(us2);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("ftp://host2/dir2/file2?k2=v2"),
|
||||||
|
construct(us1));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("http://u1:p1@[::1]/dir1/file1?k1=v1"),
|
||||||
|
construct(us2));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace uri
|
} // namespace uri
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
Loading…
Reference in New Issue