diff options
Diffstat (limited to 'Swiften/JID')
m--------- | Swiften | 0 | ||||
-rw-r--r-- | Swiften/JID/JID.cpp | 86 | ||||
-rw-r--r-- | Swiften/JID/JID.h | 80 | ||||
-rw-r--r-- | Swiften/JID/SConscript | 9 | ||||
-rw-r--r-- | Swiften/JID/UnitTest/JIDTest.cpp | 310 |
5 files changed, 0 insertions, 485 deletions
diff --git a/Swiften b/Swiften new file mode 160000 +Subproject 8213ba16d0043d2461f4b031c881d61dda5a38c diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp deleted file mode 100644 index 3be8386..0000000 --- a/Swiften/JID/JID.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include <stringprep.h> -#include <vector> -#include <iostream> - -#include "Swiften/JID/JID.h" -#include "Swiften/StringPrep/StringPrep.h" - -namespace Swift { - -JID::JID(const char* jid) { - initializeFromString(String(jid)); -} - -JID::JID(const String& jid) { - initializeFromString(jid); -} - -JID::JID(const String& node, const String& domain) : hasResource_(false) { - nameprepAndSetComponents(node, domain, ""); -} - -JID::JID(const String& node, const String& domain, const String& resource) : hasResource_(true) { - nameprepAndSetComponents(node, domain, resource); -} - -void JID::initializeFromString(const String& jid) { - if (jid.beginsWith('@')) { - return; - } - - String bare, resource; - size_t slashIndex = jid.find('/'); - if (slashIndex != jid.npos()) { - hasResource_ = true; - bare = jid.getSubstring(0, slashIndex); - resource = jid.getSubstring(slashIndex + 1, jid.npos()); - } - else { - hasResource_ = false; - bare = jid; - } - std::pair<String,String> nodeAndDomain = bare.getSplittedAtFirst('@'); - if (nodeAndDomain.second.isEmpty()) { - nameprepAndSetComponents("", nodeAndDomain.first, resource); - } - else { - nameprepAndSetComponents(nodeAndDomain.first, nodeAndDomain.second, resource); - } -} - - -void JID::nameprepAndSetComponents(const String& node, const String& domain, const String& resource) { - node_ = StringPrep::getPrepared(node, StringPrep::NamePrep); - domain_ = StringPrep::getPrepared(domain, StringPrep::XMPPNodePrep); - resource_ = StringPrep::getPrepared(resource, StringPrep::XMPPResourcePrep); -} - -String JID::toString() const { - String string; - if (!node_.isEmpty()) { - string += node_ + "@"; - } - string += domain_; - if (!isBare()) { - string += "/" + resource_; - } - return string; -} - -int JID::compare(const Swift::JID& o, CompareType compareType) const { - if (node_ < o.node_) { return -1; } - if (node_ > o.node_) { return 1; } - if (domain_ < o.domain_) { return -1; } - if (domain_ > o.domain_) { return 1; } - if (compareType == WithResource) { - if (hasResource_ != o.hasResource_) { - return hasResource_ ? 1 : -1; - } - if (resource_ < o.resource_) { return -1; } - if (resource_ > o.resource_) { return 1; } - } - return 0; -} - -} // namespace Swift - diff --git a/Swiften/JID/JID.h b/Swiften/JID/JID.h deleted file mode 100644 index 0bfb858..0000000 --- a/Swiften/JID/JID.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" - -namespace Swift { - class JID { - public: - enum CompareType { - WithResource, WithoutResource - }; - - explicit JID(const String& = String()); - explicit JID(const char*); - JID(const String& node, const String& domain); - JID(const String& node, const String& domain, const String& resource); - - bool isValid() const { - return !domain_.isEmpty(); /* FIXME */ - } - - const String& getNode() const { - return node_; - } - const String& getDomain() const { - return domain_; - } - const String& getResource() const { - return resource_; - } - bool isBare() const { - return !hasResource_; - } - - JID toBare() const { - return JID(getNode(), getDomain()); /* FIXME: Duplicate unnecessary nameprepping. Probably ok. */ - } - - String toString() const; - - bool equals(const JID& o, CompareType compareType) const { - return compare(o, compareType) == 0; - } - - int compare(const JID& o, CompareType compareType) const; - - operator String() const { - return toString(); - } - - bool operator<(const Swift::JID& b) const { - return compare(b, Swift::JID::WithResource) < 0; - } - - friend std::ostream& operator<<(std::ostream& os, const Swift::JID& j) { - os << j.toString(); - return os; - } - - friend bool operator==(const Swift::JID& a, const Swift::JID& b) { - return a.compare(b, Swift::JID::WithResource) == 0; - } - - friend bool operator!=(const Swift::JID& a, const Swift::JID& b) { - return a.compare(b, Swift::JID::WithResource) != 0; - } - - protected: - void nameprepAndSetComponents(const String& node, const String& domain, - const String& resource); - - private: - void initializeFromString(const String&); - - private: - String node_; - String domain_; - bool hasResource_; - String resource_; - }; -} diff --git a/Swiften/JID/SConscript b/Swiften/JID/SConscript deleted file mode 100644 index d48fbb0..0000000 --- a/Swiften/JID/SConscript +++ /dev/null @@ -1,9 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"]) - -objects = myenv.StaticObject([ - "JID.cpp", - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/JID/UnitTest/JIDTest.cpp b/Swiften/JID/UnitTest/JIDTest.cpp deleted file mode 100644 index 917f89f..0000000 --- a/Swiften/JID/UnitTest/JIDTest.cpp +++ /dev/null @@ -1,310 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/JID/JID.h" - -using namespace Swift; - -class JIDTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(JIDTest); - CPPUNIT_TEST(testConstructorWithString); - CPPUNIT_TEST(testConstructorWithString_NoResource); - CPPUNIT_TEST(testConstructorWithString_NoNode); - CPPUNIT_TEST(testConstructorWithString_EmptyResource); - CPPUNIT_TEST(testConstructorWithString_OnlyDomain); - CPPUNIT_TEST(testConstructorWithString_UpperCaseNode); - CPPUNIT_TEST(testConstructorWithString_UpperCaseDomain); - CPPUNIT_TEST(testConstructorWithString_UpperCaseResource); - CPPUNIT_TEST(testConstructorWithString_EmptyNode); - CPPUNIT_TEST(testConstructorWithStrings); - CPPUNIT_TEST(testIsBare); - CPPUNIT_TEST(testIsBare_NotBare); - CPPUNIT_TEST(testToBare); - CPPUNIT_TEST(testToBare_EmptyNode); - CPPUNIT_TEST(testToBare_EmptyResource); - CPPUNIT_TEST(testToString); - CPPUNIT_TEST(testToString_EmptyNode); - CPPUNIT_TEST(testToString_EmptyResource); - CPPUNIT_TEST(testToString_NoResource); - CPPUNIT_TEST(testCompare_SmallerNode); - CPPUNIT_TEST(testCompare_LargerNode); - CPPUNIT_TEST(testCompare_SmallerDomain); - CPPUNIT_TEST(testCompare_LargerDomain); - CPPUNIT_TEST(testCompare_SmallerResource); - CPPUNIT_TEST(testCompare_LargerResource); - CPPUNIT_TEST(testCompare_Equal); - CPPUNIT_TEST(testCompare_EqualWithoutResource); - CPPUNIT_TEST(testCompare_NoResourceAndEmptyResource); - CPPUNIT_TEST(testCompare_EmptyResourceAndNoResource); - CPPUNIT_TEST(testEquals); - CPPUNIT_TEST(testEquals_NotEqual); - CPPUNIT_TEST(testEquals_WithoutResource); - CPPUNIT_TEST(testSmallerThan); - CPPUNIT_TEST(testSmallerThan_Equal); - CPPUNIT_TEST(testSmallerThan_Larger); - CPPUNIT_TEST(testHasResource); - CPPUNIT_TEST(testHasResource_NoResource); - CPPUNIT_TEST_SUITE_END(); - - public: - JIDTest() {} - - void testConstructorWithString() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_NoResource() { - JID testling("foo@bar"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource()); - CPPUNIT_ASSERT(testling.isBare()); - } - - void testConstructorWithString_EmptyResource() { - JID testling("bar/"); - - CPPUNIT_ASSERT(testling.isValid()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_NoNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_OnlyDomain() { - JID testling("bar"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource()); - CPPUNIT_ASSERT(testling.isBare()); - } - - void testConstructorWithString_UpperCaseNode() { - JID testling("Fo\xCE\xA9@bar"); - - CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - } - - void testConstructorWithString_UpperCaseDomain() { - JID testling("Fo\xCE\xA9"); - - CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getDomain()); - } - - void testConstructorWithString_UpperCaseResource() { - JID testling("bar/Fo\xCE\xA9"); - - CPPUNIT_ASSERT_EQUAL(testling.getResource(), String("Fo\xCE\xA9")); - } - - void testConstructorWithString_EmptyNode() { - JID testling("@bar"); - - CPPUNIT_ASSERT(!testling.isValid()); - } - - void testConstructorWithStrings() { - JID testling("foo", "bar", "baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - } - - void testIsBare() { - CPPUNIT_ASSERT(JID("foo@bar").isBare()); - } - - void testIsBare_NotBare() { - CPPUNIT_ASSERT(!JID("foo@bar/baz").isBare()); - } - - void testToBare() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToBare_EmptyNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToBare_EmptyResource() { - JID testling("bar/"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToString() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar/baz"), testling.toString()); - } - - void testToString_EmptyNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("bar/baz"), testling.toString()); - } - - void testToString_NoResource() { - JID testling("foo@bar"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar"), testling.toString()); - } - - void testToString_EmptyResource() { - JID testling("foo@bar/"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar/"), testling.toString()); - } - - void testCompare_SmallerNode() { - JID testling1("a@c"); - JID testling2("b@b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerNode() { - JID testling1("c@a"); - JID testling2("b@b"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_SmallerDomain() { - JID testling1("x@a/c"); - JID testling2("x@b/b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerDomain() { - JID testling1("x@b/b"); - JID testling2("x@a/c"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_SmallerResource() { - JID testling1("x@y/a"); - JID testling2("x@y/b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerResource() { - JID testling1("x@y/b"); - JID testling2("x@y/a"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_Equal() { - JID testling1("x@y/z"); - JID testling2("x@y/z"); - - CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_EqualWithoutResource() { - JID testling1("x@y/a"); - JID testling2("x@y/b"); - - CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithoutResource)); - } - - void testCompare_NoResourceAndEmptyResource() { - JID testling1("x@y/"); - JID testling2("x@y"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_EmptyResourceAndNoResource() { - JID testling1("x@y"); - JID testling2("x@y/"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testEquals() { - JID testling1("x@y/c"); - JID testling2("x@y/c"); - - CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithResource)); - } - - void testEquals_NotEqual() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(!testling1.equals(testling2, JID::WithResource)); - } - - void testEquals_WithoutResource() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithoutResource)); - } - - void testSmallerThan() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(testling1 < testling2); - } - - void testSmallerThan_Equal() { - JID testling1("x@y/d"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(!(testling1 < testling2)); - } - - void testSmallerThan_Larger() { - JID testling1("x@y/d"); - JID testling2("x@y/c"); - - CPPUNIT_ASSERT(!(testling1 < testling2)); - } - - void testHasResource() { - JID testling("x@y/d"); - - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testHasResource_NoResource() { - JID testling("x@y"); - - CPPUNIT_ASSERT(testling.isBare()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(JIDTest); |