summaryrefslogtreecommitdiffstats
path: root/netwerk/test/gtest/TestStandardURL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/gtest/TestStandardURL.cpp')
-rw-r--r--netwerk/test/gtest/TestStandardURL.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/netwerk/test/gtest/TestStandardURL.cpp b/netwerk/test/gtest/TestStandardURL.cpp
new file mode 100644
index 000000000..ccab556a9
--- /dev/null
+++ b/netwerk/test/gtest/TestStandardURL.cpp
@@ -0,0 +1,69 @@
+#include "gtest/gtest.h"
+#include "gtest/MozGTestBench.h" // For MOZ_GTEST_BENCH
+
+#include "nsCOMPtr.h"
+#include "nsNetCID.h"
+#include "nsIURL.h"
+#include "nsString.h"
+#include "nsComponentManagerUtils.h"
+
+TEST(TestStandardURL, Simple) {
+ nsCOMPtr<nsIURL> url( do_CreateInstance(NS_STANDARDURL_CONTRACTID) );
+ ASSERT_TRUE(url);
+ ASSERT_EQ(url->SetSpec(NS_LITERAL_CSTRING("http://example.com")), NS_OK);
+
+ nsAutoCString out;
+
+ ASSERT_EQ(url->GetSpec(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("http://example.com/"));
+
+ ASSERT_EQ(url->Resolve(NS_LITERAL_CSTRING("foo.html?q=45"), out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("http://example.com/foo.html?q=45"));
+
+ ASSERT_EQ(url->SetScheme(NS_LITERAL_CSTRING("foo")), NS_OK);
+
+ ASSERT_EQ(url->GetScheme(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("foo"));
+
+ ASSERT_EQ(url->GetHost(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("example.com"));
+ ASSERT_EQ(url->SetHost(NS_LITERAL_CSTRING("www.yahoo.com")), NS_OK);
+ ASSERT_EQ(url->GetHost(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("www.yahoo.com"));
+
+ ASSERT_EQ(url->SetPath(NS_LITERAL_CSTRING("/some-path/one-the-net/about.html?with-a-query#for-you")), NS_OK);
+ ASSERT_EQ(url->GetPath(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("/some-path/one-the-net/about.html?with-a-query#for-you"));
+
+ ASSERT_EQ(url->SetQuery(NS_LITERAL_CSTRING("a=b&d=c&what-ever-you-want-to-be-called=45")), NS_OK);
+ ASSERT_EQ(url->GetQuery(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("a=b&d=c&what-ever-you-want-to-be-called=45"));
+
+ ASSERT_EQ(url->SetRef(NS_LITERAL_CSTRING("#some-book-mark")), NS_OK);
+ ASSERT_EQ(url->GetRef(out), NS_OK);
+ ASSERT_TRUE(out == NS_LITERAL_CSTRING("some-book-mark"));
+}
+
+#define COUNT 10000
+
+MOZ_GTEST_BENCH(TestStandardURL, Perf, [] {
+ nsCOMPtr<nsIURL> url( do_CreateInstance(NS_STANDARDURL_CONTRACTID) );
+ ASSERT_TRUE(url);
+ nsAutoCString out;
+
+ for (int i = COUNT; i; --i) {
+ ASSERT_EQ(url->SetSpec(NS_LITERAL_CSTRING("http://example.com")), NS_OK);
+ ASSERT_EQ(url->GetSpec(out), NS_OK);
+ url->Resolve(NS_LITERAL_CSTRING("foo.html?q=45"), out);
+ url->SetScheme(NS_LITERAL_CSTRING("foo"));
+ url->GetScheme(out);
+ url->SetHost(NS_LITERAL_CSTRING("www.yahoo.com"));
+ url->GetHost(out);
+ url->SetPath(NS_LITERAL_CSTRING("/some-path/one-the-net/about.html?with-a-query#for-you"));
+ url->GetPath(out);
+ url->SetQuery(NS_LITERAL_CSTRING("a=b&d=c&what-ever-you-want-to-be-called=45"));
+ url->GetQuery(out);
+ url->SetRef(NS_LITERAL_CSTRING("#some-book-mark"));
+ url->GetRef(out);
+ }
+});