aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/uri/uri_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/uri/uri_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/uri/uri_test.html1046
1 files changed, 0 insertions, 1046 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/uri/uri_test.html b/contexts/data/lib/closure-library/closure/goog/uri/uri_test.html
deleted file mode 100644
index 03881db..0000000
--- a/contexts/data/lib/closure-library/closure/goog/uri/uri_test.html
+++ /dev/null
@@ -1,1046 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2006 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<!--
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.Uri</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.Uri');
- goog.require('goog.testing.jsunit');
-</script>
-</head>
-<body>
-<script>
-
-function testUriParse() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
- assertEquals('http', uri.getScheme());
- assertEquals('', uri.getUserInfo());
- assertEquals('www.google.com', uri.getDomain());
- assertEquals(80, uri.getPort());
- assertEquals('/path', uri.getPath());
- assertEquals('q=query', uri.getQuery());
- assertEquals('fragmento', uri.getFragment());
-
- assertEquals('terer258+foo@gmail.com',
- goog.Uri.parse('mailto:terer258+foo@gmail.com').getPath());
-}
-
-function testUriParseAcceptsThingsWithToString() {
- // Ensure that the goog.Uri constructor coerces random types to strings.
- var uriStr = 'http://www.google.com:80/path?q=query#fragmento';
- var uri = new goog.Uri({toString: function() { return uriStr; }});
- assertEquals('http://www.google.com:80/path?q=query#fragmento',
- uri.toString());
-}
-
-function testUriCreate() {
- assertEquals(
- 'http://www.google.com:81/search%20path?q=what%20to%20eat%2Bdrink%3F',
- goog.Uri.create('http', null, 'www.google.com', 81, '/search path',
- (new goog.Uri.QueryData).set('q', 'what to eat+drink?'), null)
- .toString());
-
- assertEquals(
- 'http://www.google.com:80/search%20path?q=what%20to%20eat%2Bdrink%3F',
- goog.Uri.create('http', null, 'www.google.com', 80, '/search path',
- (new goog.Uri.QueryData).set('q', 'what to eat+drink?'), null)
- .toString());
-
- assertEquals(
- 'http://www.google.com/search%20path?q=what%20to%20eat%2Bdrink%3F',
- goog.Uri.create('http', null, 'www.google.com', null, '/search path',
- (new goog.Uri.QueryData).set('q', 'what to eat+drink?'), null)
- .toString());
-
- assertEquals(
- 'http://www.google.com/search%20path?q=what%20to%20eat%2Bdrink%3F',
- goog.Uri.create('http', null, 'www.google.com', null, '/search path',
- new goog.Uri.QueryData(null, null, true).set('Q', 'what to eat+drink?'), null)
- .toString());
-}
-
-function testClone() {
- var uri1 = new goog.Uri(
- 'http://user:pass@www.google.com:8080/foo?a=1&b=2#c=3');
- // getCount forces instantiation of internal data structures to more thoroughly test clone.
- uri1.getQueryData().getCount();
- var uri2 = uri1.clone();
-
- assertNotEquals(uri1, uri2);
- assertEquals(uri1.toString(), uri2.toString());
- assertEquals(2, uri2.getQueryData().getCount());
-
- uri2.setParameterValues('q','bar');
- assertFalse(uri1.getParameterValue('q') == 'bar');
-}
-
-function testRelativeUris() {
- assertFalse(new goog.Uri('?hello').hasPath());
-}
-
-function testAbsolutePathResolution() {
- var uri1 = new goog.Uri('http://www.google.com:8080/path?q=query#fragmento');
-
- assertEquals('http://www.google.com:8080/foo',
- uri1.resolve(new goog.Uri('/foo')).toString());
-
- assertEquals('http://www.google.com:8080/foo/bar',
- goog.Uri.resolve('http://www.google.com:8080/search/',
- '/foo/bar').toString());
-}
-
-function testRelativePathResolution() {
- var uri1 = new goog.Uri('http://www.google.com:8080/path?q=query#fragmento');
- assertEquals('http://www.google.com:8080/foo',
- uri1.resolve(goog.Uri.parse('foo')).toString());
-
- var uri2 = new goog.Uri('http://www.google.com:8080/search');
- assertEquals('http://www.google.com:8080/foo/bar',
- uri2.resolve(new goog.Uri('foo/bar')).toString());
-
- var uri3 = new goog.Uri('http://www.google.com:8080/search/');
- assertEquals('http://www.google.com:8080/search/foo/bar',
- uri3.resolve(new goog.Uri('foo/bar')).toString());
-
- var uri4 = new goog.Uri('foo');
- assertEquals('bar',
- uri4.resolve(new goog.Uri('bar')).toString());
-}
-
-function testDomainResolution() {
- assertEquals('https://www.google.com/foo/bar',
- new goog.Uri('https://www.fark.com:443/search/').resolve(
- new goog.Uri('//www.google.com/foo/bar')
- ).toString());
-
- assertEquals('http://www.google.com/',
- goog.Uri.resolve('http://www.fark.com/search/',
- '//www.google.com/').toString());
-}
-
-function testQueryResolution() {
- assertEquals('http://www.google.com/search?q=new%20search',
- goog.Uri.parse('http://www.google.com/search?q=old+search').
- resolve(goog.Uri.parse('?q=new%20search')).toString());
-
- assertEquals('http://www.google.com/search?q=new%20search',
- goog.Uri.parse('http://www.google.com/search?q=old+search#hi').
- resolve(goog.Uri.parse('?q=new%20search')).toString());
-}
-
-function testFragmentResolution() {
- assertEquals('http://www.google.com/foo/bar?q=hi#there',
- goog.Uri.resolve('http://www.google.com/foo/bar?q=hi',
- '#there').toString());
-
- assertEquals('http://www.google.com/foo/bar?q=hi#there',
- goog.Uri.resolve('http://www.google.com/foo/bar?q=hi#you',
- '#there').toString());
-}
-
-function testBogusResolution() {
- assertEquals('a://completely.different/url',
- goog.Uri.parse('some:base/url').resolve(
- goog.Uri.parse('a://completely.different/url')
- ).toString());
-}
-
-function testDotSegmentsRemovalRemoveLeadingDots() {
- // Test removing leading "../" and "./"
- assertDotRemovedEquals('bar', '../bar');
- assertDotRemovedEquals('bar', './bar');
- assertDotRemovedEquals('bar', '.././bar');
- assertDotRemovedEquals('bar', '.././bar');
-}
-
-function testDotSegmentRemovalRemoveSingleDot() {
- // Tests replacing "/./" with "/"
- assertDotRemovedEquals('/foo/bar', '/foo/./bar');
- assertDotRemovedEquals('/bar/', '/bar/./');
-
- // Test replacing trailing "/." with "/"
- assertDotRemovedEquals('/', '/.');
- assertDotRemovedEquals('/bar/', '/bar/.');
-}
-
-function testDotSegmentRemovalRemoveDoubleDot() {
- // Test resolving "/../"
- assertDotRemovedEquals('/bar', '/foo/../bar');
- assertDotRemovedEquals('/', '/bar/../');
-
- // Test resolving trailing "/.."
- assertDotRemovedEquals('/', '/..');
- assertDotRemovedEquals('/', '/', '/bar/..');
- assertDotRemovedEquals('/foo/', '/foo/bar/..');
-}
-
-function testDotSegmentRemovalRemovePlainDots() {
- // RFC 3986, section 5.2.4, point 2.D.
- // Test resolving plain ".." or "."
- assertDotRemovedEquals('', '.');
- assertDotRemovedEquals('', '..');
-}
-
-function testPathConcatenation() {
- // Check accordenance with RFC 3986, section 5.2.4
- assertResolvedEquals('bar', '', 'bar');
- assertResolvedEquals('/bar', '/', 'bar');
- assertResolvedEquals('/bar', '/foo', '/bar');
- assertResolvedEquals('/foo/foo', '/foo/bar', 'foo');
-}
-
-function testPathConcatenationDontRemoveForEmptyUri() {
- // Resolving URIs with empty path should not result in dot segments removal.
- // See: algorithm in section 5.2.2: code inside 'if (R.path == "")' clause.
- assertResolvedEquals('/search/../foo', '/search/../foo', '');
- assertResolvedEquals('/search/./foo', '/search/./foo', '');
-}
-
-function testParameterGetters() {
- function assertArraysEqual(l1, l2) {
- if (!l1 || !l2) {
- assertEquals(l1, l2);
- return;
- }
- var l1s = l1.toString(), l2s = l2.toString();
- assertEquals(l1s, l2s);
- assertEquals(l1s, l1.length, l2.length);
- for (var i = 0; i < l1.length; ++i) {
- assertEquals("part " + i + " of " + l1.length + " in " + l1s,
- l1[i], l2[i]);
- }
- }
-
- assertArraysEqual(['v1', 'v2'],
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3').
- getParameterValues('key'));
-
- assertArraysEqual(['v1', 'v2'],
- goog.Uri.parse('/path?a=b&keY=v1&c=d&KEy=v2&keywithsuffix=v3', true).
- getParameterValues('kEy'));
-
- assertEquals('v1',
- goog.Uri.parse('/path?key=v1&c=d&keywithsuffix=v3&key=v2').
- getParameterValue('key'));
-
- assertEquals('v1',
- goog.Uri.parse('/path?kEY=v1&c=d&keywithsuffix=v3&key=v2', true).
- getParameterValue('Key'));
-
- assertEquals('v1=v2',
- goog.Uri.parse('/path?key=v1=v2', true).
- getParameterValue('key'));
-
- assertEquals('v1=v2=v3',
- goog.Uri.parse('/path?key=v1=v2=v3', true).
- getParameterValue('key'));
-
- assertArraysEqual(undefined,
- goog.Uri.parse('/path?key=v1&c=d&keywithsuffix=v3&key=v2').
- getParameterValue('nosuchkey'));
- // test boundary conditions
- assertArraysEqual(['v1', 'v2'],
- goog.Uri.parse('/path?key=v1&c=d&key=v2&keywithsuffix=v3').
- getParameterValues('key'));
- assertArraysEqual(['v1', 'v2'],
- goog.Uri.parse('/path?key=v1&c=d&keywithsuffix=v3&key=v2').
- getParameterValues('key'));
-
- // test no =
- assertArraysEqual([''],
- goog.Uri.parse('/path?key').getParameterValues('key'));
- assertArraysEqual([''],
- goog.Uri.parse('/path?key', true).getParameterValues('key'));
-
- assertArraysEqual([''],
- goog.Uri.parse('/path?foo=bar&key').
- getParameterValues('key'));
- assertArraysEqual([''],
- goog.Uri.parse('/path?foo=bar&key', true).
- getParameterValues('key'));
-
- assertEquals('',
- goog.Uri.parse('/path?key').getParameterValue('key'));
- assertEquals('',
- goog.Uri.parse('/path?key', true).getParameterValue('key'));
-
- assertEquals('',
- goog.Uri.parse('/path?foo=bar&key').getParameterValue('key'));
- assertEquals('',
- goog.Uri.parse('/path?foo=bar&key', true).
- getParameterValue('key'));
-
- var u = new goog.Uri('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3');
- assertArraysEqual(u.getParameterValues('a'), ['b']);
- assertArraysEqual(u.getParameterValues('key'), ['v1', 'v2']);
- assertArraysEqual(u.getParameterValues('c'), ['d']);
- assertArraysEqual(u.getParameterValues('keywithsuffix'), ['v3']);
- assertArraysEqual(u.getParameterValues('KeyWITHSuffix'), []);
-
- // Make sure constructing from another URI preserves case-sensitivity
- var u2 = new goog.Uri(u);
- assertArraysEqual(u2.getParameterValues('a'), ['b']);
- assertArraysEqual(u2.getParameterValues('key'), ['v1', 'v2']);
- assertArraysEqual(u2.getParameterValues('c'), ['d']);
- assertArraysEqual(u2.getParameterValues('keywithsuffix'), ['v3']);
- assertArraysEqual(u2.getParameterValues('KeyWITHSuffix'), []);
-
- u = new goog.Uri('/path?a=b&key=v1&c=d&kEy=v2&keywithsuffix=v3', true);
- assertArraysEqual(u.getParameterValues('A'), ['b']);
- assertArraysEqual(u.getParameterValues('keY'), ['v1', 'v2']);
- assertArraysEqual(u.getParameterValues('c'), ['d']);
- assertArraysEqual(u.getParameterValues('keyWITHsuffix'), ['v3']);
-
- // Make sure constructing from another URI preserves case-insensitivity
- u2 = new goog.Uri(u);
- assertArraysEqual(u2.getParameterValues('A'), ['b']);
- assertArraysEqual(u2.getParameterValues('keY'), ['v1', 'v2']);
- assertArraysEqual(u2.getParameterValues('c'), ['d']);
- assertArraysEqual(u2.getParameterValues('keyWITHsuffix'), ['v3']);
-}
-
-function testRemoveParameter() {
- assertEquals('/path?a=b&c=d&keywithsuffix=v3',
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3')
- .removeParameter('key').toString());
-}
-
-function testParameterSetters() {
- assertEquals('/path?a=b&key=newval&c=d&keywithsuffix=v3',
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3')
- .setParameterValue('key', 'newval').toString());
-
- assertEquals('/path?a=b&key=1&key=2&key=3&c=d&keywithsuffix=v3',
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3')
- .setParameterValues('key', ['1', '2', '3']).toString());
-
- assertEquals('/path',
- goog.Uri.parse('/path?key=v1&key=v2')
- .setParameterValues('key', []).toString());
-
- // Test case-insensitive setters
- assertEquals('/path?a=b&key=newval&c=d&keywithsuffix=v3',
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3', true)
- .setParameterValue('KEY', 'newval').toString());
-
- assertEquals('/path?a=b&key=1&key=2&key=3&c=d&keywithsuffix=v3',
- goog.Uri.parse('/path?a=b&key=v1&c=d&key=v2&keywithsuffix=v3', true)
- .setParameterValues('kEY', ['1', '2', '3']).toString());
-}
-
-function testEncoding() {
- assertEquals('/foo bar baz',
- goog.Uri.parse('/foo%20bar%20baz').getPath());
- assertEquals('/foo+bar+baz',
- goog.Uri.parse('/foo+bar+baz').getPath());
-}
-
-function testSetScheme() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setScheme('https');
- assertTrue(uri.hasScheme());
- assertEquals('https', uri.getScheme());
- assertEquals('https://www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setScheme(encodeURIComponent('ab cd'), true);
- assertTrue(uri.hasScheme());
- assertEquals('ab cd', uri.getScheme());
- assertEquals('ab%20cd://www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setScheme('http:');
- assertTrue(uri.hasScheme());
- assertEquals('http', uri.getScheme());
- assertEquals('http://www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setScheme('');
- assertFalse(uri.hasScheme());
- assertEquals('', uri.getScheme());
- assertEquals('//www.google.com:80/path?q=query#fragmento',
- uri.toString());
-}
-
-function testSetDomain() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setDomain('\u1e21oogle.com');
- assertTrue(uri.hasDomain());
- assertEquals('\u1e21oogle.com', uri.getDomain());
- assertEquals('http://%E1%B8%A1oogle.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setDomain(encodeURIComponent('\u1e21oogle.com'), true);
- assertTrue(uri.hasDomain());
- assertEquals('\u1e21oogle.com', uri.getDomain());
- assertEquals('http://%E1%B8%A1oogle.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setDomain('');
- assertFalse(uri.hasDomain());
- assertEquals('', uri.getDomain());
- assertEquals('http:/path?q=query#fragmento',
- uri.toString());
-}
-
-function testSetPort() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- assertThrows(function() {
- uri.setPort(-1);
- });
- assertEquals(80, uri.getPort());
-
- assertThrows(function() {
- uri.setPort('a');
- });
- assertEquals(80, uri.getPort());
-
- uri.setPort(443);
- assertTrue(uri.hasPort());
- assertEquals(443, uri.getPort());
- assertEquals('http://www.google.com:443/path?q=query#fragmento',
- uri.toString());
-
- // TODO(user): This is undocumented, but exist in previous unit
- // test. We should clarify whether this is intended (alternatively,
- // setPort(0) also works).
- uri.setPort(null);
- assertFalse(uri.hasPort());
- assertEquals(null, uri.getPort());
- assertEquals('http://www.google.com/path?q=query#fragmento',
- uri.toString());
-}
-
-function testSetPath() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setPath('/search path/');
- assertTrue(uri.hasPath());
- assertEquals('/search path/', uri.getPath());
- assertEquals(
- 'http://www.google.com:80/search%20path/?q=query#fragmento',
- uri.toString());
-
- uri.setPath(encodeURIComponent('/search path 2/'), true);
- assertTrue(uri.hasPath());
- assertEquals('/search path 2/', uri.getPath());
- assertEquals(
- 'http://www.google.com:80/search%20path%202/?q=query#fragmento',
- uri.toString());
-
- uri.setPath('');
- assertFalse(uri.hasPath());
- assertEquals('', uri.getPath());
- assertEquals(
- 'http://www.google.com:80?q=query#fragmento',
- uri.toString());
-}
-
-function testSetFragment() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setFragment('foo?bar=a b&baz=2');
- assertTrue(uri.hasFragment());
- assertEquals('foo?bar=a b&baz=2', uri.getFragment());
- assertEquals(
- 'http://www.google.com:80/path?q=query#foo?bar=a%20b&baz=2',
- uri.toString());
-
- uri.setFragment(encodeURIComponent('foo?bar=a b&baz=3'), true);
- assertTrue(uri.hasFragment());
- assertEquals('foo?bar=a b&baz=3', uri.getFragment());
- assertEquals(
- 'http://www.google.com:80/path?q=query#foo?bar=a%20b&baz=3',
- uri.toString());
-
- uri.setFragment('');
- assertFalse(uri.hasFragment());
- assertEquals('', uri.getFragment());
- assertEquals(
- 'http://www.google.com:80/path?q=query',
- uri.toString());
-}
-
-function testSetUserInfo() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setUserInfo('user:pw d');
- assertTrue(uri.hasUserInfo());
- assertEquals('user:pw d', uri.getUserInfo());
- assertEquals('http://user:pw%20d@www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setUserInfo(encodeURIComponent('user:pw d2'), true);
- assertTrue(uri.hasUserInfo());
- assertEquals('user:pw d2', uri.getUserInfo());
- assertEquals('http://user:pw%20d2@www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setUserInfo('user');
- assertTrue(uri.hasUserInfo());
- assertEquals('user', uri.getUserInfo());
- assertEquals('http://user@www.google.com:80/path?q=query#fragmento',
- uri.toString());
-
- uri.setUserInfo('');
- assertFalse(uri.hasUserInfo());
- assertEquals('', uri.getUserInfo());
- assertEquals('http://www.google.com:80/path?q=query#fragmento',
- uri.toString());
-}
-
-function testSetParameterValues() {
- var uri = new goog.Uri('http://www.google.com:80/path?q=query#fragmento');
-
- uri.setParameterValues('q', ['foo', 'other query']);
- assertEquals('http://www.google.com:80/path?q=foo&q=other%20query#fragmento',
- uri.toString());
-
- uri.setParameterValues('lang', 'en');
- assertEquals(
- 'http://www.google.com:80/path?q=foo&q=other%20query&lang=en#fragmento',
- uri.toString());
-}
-
-function testTreatmentOfAt1() {
- var uri = new goog.Uri('http://www.google.com?q=johndoe@gmail.com');
- assertEquals('http', uri.getScheme());
- assertEquals('www.google.com', uri.getDomain());
- assertEquals('johndoe@gmail.com', uri.getParameterValue('q'));
-
- assertEquals('http://www.google.com?q=johndoe%40gmail.com',
- goog.Uri.create('http', null, 'www.google.com', null, null,
- 'q=johndoe@gmail.com', null).toString());
-}
-
-function testTreatmentOfAt2() {
- var uri = new goog.Uri('http://www/~johndoe@gmail.com/foo');
- assertEquals('http', uri.getScheme());
- assertEquals('www', uri.getDomain());
- assertEquals('/~johndoe@gmail.com/foo', uri.getPath());
-
- assertEquals('http://www/~johndoe@gmail.com/foo',
- goog.Uri.create('http', null, 'www', null,
- '/~johndoe@gmail.com/foo', null, null).
- toString());
-}
-
-function testTreatmentOfAt3() {
- var uri = new goog.Uri('ftp://skroob:1234@teleport/~skroob@vacuum');
- assertEquals('ftp', uri.getScheme());
- assertEquals('skroob:1234', uri.getUserInfo());
- assertEquals('teleport', uri.getDomain());
- assertEquals('/~skroob@vacuum', uri.getPath());
-
- assertEquals('ftp://skroob:1234@teleport/~skroob@vacuum',
- goog.Uri.create('ftp', 'skroob:1234', 'teleport', null,
- '/~skroob@vacuum', null, null).toString());
-}
-
-function testTreatmentOfAt4() {
- assertEquals('ftp://darkhelmet:45%4078@teleport/~dhelmet@vacuum',
- goog.Uri.create('ftp', 'darkhelmet:45@78', 'teleport', null,
- '/~dhelmet@vacuum', null, null).toString());
-}
-
-function testSameDomain1() {
- var uri1 = 'http://www.google.com/a';
- var uri2 = 'http://www.google.com/b';
- assertTrue(goog.Uri.haveSameDomain(uri1, uri2));
- assertTrue(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testSameDomain2() {
- var uri1 = 'http://www.google.com:1234/a';
- var uri2 = 'http://www.google.com/b';
- assertFalse(goog.Uri.haveSameDomain(uri1, uri2));
- assertFalse(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testSameDomain3() {
- var uri1 = 'www.google.com/a';
- var uri2 = 'http://www.google.com/b';
- assertFalse(goog.Uri.haveSameDomain(uri1, uri2));
- assertFalse(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testSameDomain4() {
- var uri1 = '/a';
- var uri2 = 'http://www.google.com/b';
- assertFalse(goog.Uri.haveSameDomain(uri1, uri2));
- assertFalse(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testSameDomain5() {
- var uri1 = 'http://www.google.com/a';
- var uri2 = 'http://mail.google.com/b';
- assertFalse(goog.Uri.haveSameDomain(uri1, uri2));
- assertFalse(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testSameDomain6() {
- var uri1 = '/a';
- var uri2 = '/b';
- assertTrue(goog.Uri.haveSameDomain(uri1, uri2));
- assertTrue(goog.Uri.haveSameDomain(uri2, uri1));
-}
-
-function testMakeUnique() {
- var uri1 = new goog.Uri('http://www.google.com/setgmail');
- uri1.makeUnique();
- var uri2 = new goog.Uri('http://www.google.com/setgmail');
- uri2.makeUnique();
- assertTrue(uri1.getQueryData().containsKey(goog.Uri.RANDOM_PARAM));
- assertTrue(uri1.toString() != uri2.toString());
-}
-
-function testSetReadOnly() {
- var uri = new goog.Uri('http://www.google.com/setgmail');
- uri.setReadOnly(true);
- assertThrows(function() {
- uri.setParameterValue('cant', 'dothis')
- });
-}
-
-function testSetReadOnlyChained() {
- var uri = new goog.Uri('http://www.google.com/setgmail').setReadOnly(true);
- assertThrows(function() {
- uri.setParameterValue('cant', 'dothis');
- });
-}
-
-function testQueryDataCount() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- assertEquals(5, qd.getCount());
-}
-
-function testQueryDataRemove() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.remove('c');
- assertEquals(4, qd.getCount());
- assertEquals('a=A&a=A2&b=B&b=B2', String(qd));
- qd.remove('a');
- assertEquals(2, qd.getCount());
- assertEquals('b=B&b=B2', String(qd));
-}
-
-function testQueryDataClear() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.clear();
- assertEquals(0, qd.getCount());
- assertEquals('', String(qd));
-}
-
-function testQueryDataIsEmpty() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.remove('a');
- assertFalse(qd.isEmpty());
- qd.remove('b');
- assertFalse(qd.isEmpty());
- qd.remove('c');
- assertTrue(qd.isEmpty());
-
- qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.clear();
- assertTrue(qd.isEmpty());
-
- qd = new goog.Uri.QueryData('');
- assertTrue(qd.isEmpty());
-}
-
-function testQueryDataContainsKey() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- assertTrue(qd.containsKey('a'));
- assertTrue(qd.containsKey('b'));
- assertTrue(qd.containsKey('c'));
- qd.remove('a');
- assertFalse(qd.containsKey('a'));
- assertTrue(qd.containsKey('b'));
- assertTrue(qd.containsKey('c'));
- qd.remove('b');
- assertFalse(qd.containsKey('a'));
- assertFalse(qd.containsKey('b'));
- assertTrue(qd.containsKey('c'));
- qd.remove('c');
- assertFalse(qd.containsKey('a'));
- assertFalse(qd.containsKey('b'));
- assertFalse(qd.containsKey('c'));
-
- qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.clear();
- assertFalse(qd.containsKey('a'));
- assertFalse(qd.containsKey('b'));
- assertFalse(qd.containsKey('c'));
-
- // Test case-insensitive
- qd = new goog.Uri.QueryData('aaa=A&bbb=B&aaa=A2&bbbb=B2&ccc=C', null, true);
- assertTrue(qd.containsKey('aaa'));
- assertTrue(qd.containsKey('bBb'));
- assertTrue(qd.containsKey('CCC'));
-
- qd = new goog.Uri.QueryData('a=b=c');
- assertTrue(qd.containsKey('a'));
- assertFalse(qd.containsKey('b'));
-}
-
-function testQueryDataContainsValue() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
-
- assertTrue(qd.containsValue('A'));
- assertTrue(qd.containsValue('B'));
- assertTrue(qd.containsValue('A2'));
- assertTrue(qd.containsValue('B2'));
- assertTrue(qd.containsValue('C'));
- qd.remove('a');
- assertFalse(qd.containsValue('A'));
- assertTrue(qd.containsValue('B'));
- assertFalse(qd.containsValue('A2'));
- assertTrue(qd.containsValue('B2'));
- assertTrue(qd.containsValue('C'));
- qd.remove('b');
- assertFalse(qd.containsValue('A'));
- assertFalse(qd.containsValue('B'));
- assertFalse(qd.containsValue('A2'));
- assertFalse(qd.containsValue('B2'));
- assertTrue(qd.containsValue('C'));
- qd.remove('c');
- assertFalse(qd.containsValue('A'));
- assertFalse(qd.containsValue('B'));
- assertFalse(qd.containsValue('A2'));
- assertFalse(qd.containsValue('B2'));
- assertFalse(qd.containsValue('C'));
-
- qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
- qd.clear();
- assertFalse(qd.containsValue('A'));
- assertFalse(qd.containsValue('B'));
- assertFalse(qd.containsValue('A2'));
- assertFalse(qd.containsValue('B2'));
- assertFalse(qd.containsValue('C'));
-
- qd = new goog.Uri.QueryData('a=b=c');
- assertTrue(qd.containsValue('b=c'));
- assertFalse(qd.containsValue('b'));
- assertFalse(qd.containsValue('c'));
-}
-
-function testQueryDataGetKeys() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C=extra');
-
- assertEquals('aabbc', qd.getKeys().join(''));
- qd.remove('a');
- assertEquals('bbc', qd.getKeys().join(''));
- qd.add('d', 'D');
- qd.add('d', 'D');
- assertEquals('bbcdd', qd.getKeys().join(''));
-
- // Test case-insensitive
- qd = new goog.Uri.QueryData('A=A&B=B&a=A2&b=B2&C=C=extra', null, true);
-
- assertEquals('aabbc', qd.getKeys().join(''));
- qd.remove('a');
- assertEquals('bbc', qd.getKeys().join(''));
- qd.add('d', 'D');
- qd.add('D', 'D');
- assertEquals('bbcdd', qd.getKeys().join(''));
-}
-
-function testQueryDataGetValues() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C=extra');
-
- assertArrayEquals(['A', 'A2', 'B', 'B2', 'C=extra'], qd.getValues());
- qd.remove('a');
- assertArrayEquals(['B', 'B2', 'C=extra'], qd.getValues());
- qd.add('d', 'D');
- qd.add('d', 'D');
- assertArrayEquals(['B', 'B2', 'C=extra', 'D', 'D'], qd.getValues());
-
- qd.add('e', new String('Eee'));
- assertArrayEquals(['B', 'B2', 'C=extra', 'D', 'D', 'Eee'], qd.getValues());
-
- assertArrayEquals(['Eee'], qd.getValues('e'));
-}
-
-function testQueryDataSet() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
-
- qd.set('d', 'D');
- assertEquals('a=A&a=A2&b=B&b=B2&c=C&d=D', String(qd));
- qd.set('d', 'D2');
- assertEquals('a=A&a=A2&b=B&b=B2&c=C&d=D2', String(qd));
- qd.set('a', 'A3');
- assertEquals('a=A3&b=B&b=B2&c=C&d=D2', String(qd));
- qd.remove('a');
- qd.set('a', 'A4');
- // this is different in IE and Mozilla so we cannot use the toString to test
- assertEquals('A4', qd.get('a'));
-}
-
-function testQueryDataGet() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C=extra');
-
- assertEquals('A', qd.get('a'));
- assertEquals('B', qd.get('b'));
- assertEquals('C=extra', qd.get('c'));
- assertEquals('Default', qd.get('d', 'Default'));
-
- qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C=extra', null, true);
-
- assertEquals('A', qd.get('A'));
- assertEquals('B', qd.get('b'));
- assertEquals('C=extra', qd.get('C'));
- assertEquals('Default', qd.get('D', 'Default'));
-
- // Some unit tests pass undefined to get method (even though the type
- // for key is {string}). This is not caught by JsCompiler as
- // tests aren't typically compiled.
- assertUndefined(qd.get(undefined));
-}
-
-
-function testQueryDataSetValues() {
- var qd = new goog.Uri.QueryData('a=A&b=B&a=A2&b=B2&c=C');
-
- qd.setValues('a', ['A3', 'A4', 'A5']);
- assertEquals('a=A3&a=A4&a=A5&b=B&b=B2&c=C', String(qd));
- qd.setValues('d', ['D']);
- assertEquals('a=A3&a=A4&a=A5&b=B&b=B2&c=C&d=D', String(qd));
- qd.setValues('e', []);
- assertEquals('a=A3&a=A4&a=A5&b=B&b=B2&c=C&d=D', String(qd));
-}
-
-function testQueryDataSetIgnoreCase() {
- var qd = new goog.Uri.QueryData('aaA=one&BBb=two&cCc=three');
- assertEquals('one', qd.get('aaA'));
- assertEquals(undefined, qd.get('aaa'));
- qd.setIgnoreCase(true);
- assertEquals('one', qd.get('aaA'));
- assertEquals('one', qd.get('aaa'));
- qd.setIgnoreCase(false);
- assertEquals(undefined, qd.get('aaA'));
- assertEquals('one', qd.get('aaa'));
- qd.add('DdD', 'four');
- assertEquals('four', qd.get('DdD'));
- assertEquals(undefined, qd.get('ddd'));
-}
-
-function testQueryDataSetIgnoreCaseWithMultipleValues() {
- var qd = new goog.Uri.QueryData('aaA=one&aaA=two');
- qd.setIgnoreCase(true);
- assertArrayEquals(['one', 'two'], qd.getValues('aaA'));
- assertArrayEquals(['one', 'two'], qd.getValues('aaa'));
-}
-
-function testQueryDataExtend() {
- var qd1 = new goog.Uri.QueryData('a=A&b=B&c=C');
- var qd2 = new goog.Uri.QueryData('d=D&e=E');
- qd1.extend(qd2);
- assertEquals('a=A&b=B&c=C&d=D&e=E', String(qd1));
-
- qd1 = new goog.Uri.QueryData('a=A&b=B&c=C');
- qd2 = new goog.Uri.QueryData('d=D&e=E');
- var qd3 = new goog.Uri.QueryData('f=F&g=G');
- qd1.extend(qd2, qd3);
- assertEquals('a=A&b=B&c=C&d=D&e=E&f=F&g=G', String(qd1));
-
- qd1 = new goog.Uri.QueryData('a=A&b=B&c=C');
- qd2 = new goog.Uri.QueryData('a=A&c=C');
- qd1.extend(qd2);
- assertEquals('a=A&a=A&b=B&c=C&c=C', String(qd1));
-}
-
-function testQueryDataCreateFromMap() {
- assertEquals('', String(goog.Uri.QueryData.createFromMap({})));
- assertEquals('a=A&b=B&c=C',
- String(goog.Uri.QueryData.createFromMap({a:'A',b:'B',c:'C'})));
- assertEquals('a=foo%26bar',
- String(goog.Uri.QueryData.createFromMap({a:'foo&bar'})));
-}
-
-function testQueryDataCreateFromMapWithArrayValues() {
- var obj = {'key': ['1', '2', '3']};
- var qd = goog.Uri.QueryData.createFromMap(obj);
- assertEquals('key=1&key=2&key=3', qd.toString());
- qd.add('breakCache', 1);
- obj.key.push('4');
- assertEquals('key=1&key=2&key=3&breakCache=1', qd.toString());
-
-}
-
-function testQueryDataCreateFromKeysValues() {
- assertEquals('', String(goog.Uri.QueryData.createFromKeysValues([], [])));
- assertEquals('a=A&b=B&c=C', String(goog.Uri.QueryData.createFromKeysValues(
- ['a','b','c'],['A','B','C'])));
- assertEquals('a=A&a=B&a=C', String(goog.Uri.QueryData.createFromKeysValues(
- ['a','a','a'],['A','B','C'])));
-}
-
-function testQueryDataAddMultipleValuesWithSameKey() {
- var qd = new goog.Uri.QueryData();
- qd.add('abc', 'v');
- qd.add('abc', 'v2');
- qd.add('abc', 'v3');
- assertEquals('abc=v&abc=v2&abc=v3', qd.toString());
-}
-
-function testQueryDataAddWithArray() {
- var qd = new goog.Uri.QueryData();
- qd.add('abc', ['v', 'v2']);
- assertEquals('abc=v%2Cv2', qd.toString());
-}
-
-function testFragmentEncoding() {
- var allowedInFragment = /[A-Za-z0-9\-\._~!$&'()*+,;=:@/?]/g;
-
- var sb = [];
- for (var i = 33; i < 500; i++) { // arbitrarily use first 500 chars.
- sb.push(String.fromCharCode(i));
- }
- var testString = sb.join('');
-
- var fragment = new goog.Uri().setFragment(testString).toString();
-
- // Remove first '#' character.
- fragment = fragment.substr(1);
-
- // Strip all percent encoded characters, as they're ok.
- fragment = fragment.replace(/%[0-9A-F][0-9A-F]/g, '');
-
- // Remove allowed characters.
- fragment = fragment.replace(allowedInFragment, '');
-
- // Only illegal characters should remain, which is a fail.
- assertEquals('String should be empty', 0, fragment.length);
-
-}
-
-// Tests, that creating URI from components and then
-// getting the components back yields equal results.
-// The special attention is payed to test proper encoding
-// and decoding of URI components.
-function testComponentsAfterUriCreate() {
- var createdUri = new goog.Uri.create('%40', // scheme
- '%41', // user info
- '%42', // domain
- 43, // port
- '%44', // path
- '%45', // query
- '%46'); // fragment
-
- assertEquals('%40', createdUri.getScheme());
- assertEquals('%41', createdUri.getUserInfo());
- assertEquals('%42', createdUri.getDomain());
- assertEquals(43, createdUri.getPort());
- assertEquals('%44', createdUri.getPath());
- assertEquals('%2545', createdUri.getQuery()); // returns encoded value
- assertEquals('%45', createdUri.getDecodedQuery());
- assertEquals('%2545', createdUri.getEncodedQuery());
- assertEquals('%46', createdUri.getFragment());
-}
-
-// Tests setting the query string and then reading back
-// query parameter values.
-function testSetQueryAndGetParameterValue() {
- var uri = new goog.Uri();
-
- // Sets query as decoded string.
- uri.setQuery('i=j&k');
- assertEquals('?i=j&k', uri.toString());
- assertEquals('i=j&k', uri.getDecodedQuery());
- assertEquals('i=j&k', uri.getEncodedQuery());
- assertEquals('i=j&k', uri.getQuery()); // returns encoded value
- assertEquals('j', uri.getParameterValue('i'));
- assertEquals('', uri.getParameterValue('k'));
-
- // Sets query as encoded string.
- uri.setQuery('i=j&k', true);
- assertEquals('?i=j&k', uri.toString());
- assertEquals('i=j&k', uri.getDecodedQuery());
- assertEquals('i=j&k', uri.getEncodedQuery());
- assertEquals('i=j&k', uri.getQuery()); // returns encoded value
- assertEquals('j', uri.getParameterValue('i'));
- assertEquals('', uri.getParameterValue('k'));
-
- // Sets query as decoded string.
- uri.setQuery('i=j%26k');
- assertEquals('?i=j%2526k', uri.toString());
- assertEquals('i=j%26k', uri.getDecodedQuery());
- assertEquals('i=j%2526k', uri.getEncodedQuery());
- assertEquals('i=j%2526k', uri.getQuery()); // returns encoded value
- assertEquals('j%26k', uri.getParameterValue('i'));
- assertUndefined(uri.getParameterValue('k'));
-
- // Sets query as encoded string.
- uri.setQuery('i=j%26k', true);
- assertEquals('?i=j%26k', uri.toString());
- assertEquals('i=j&k', uri.getDecodedQuery());
- assertEquals('i=j%26k', uri.getEncodedQuery());
- assertEquals('i=j%26k', uri.getQuery()); // returns encoded value
- assertEquals('j&k', uri.getParameterValue('i'));
- assertUndefined(uri.getParameterValue('k'));
-}
-
-// Tests setting query parameter values and the reading back the query string.
-function testSetParameterValueAndGetQuery() {
- var uri = new goog.Uri();
-
- uri.setParameterValue('a', 'b&c');
- assertEquals('?a=b%26c', uri.toString());
- assertEquals('a=b&c', uri.getDecodedQuery());
- assertEquals('a=b%26c', uri.getEncodedQuery());
- assertEquals('a=b%26c', uri.getQuery()); // returns encoded value
-
- uri.setParameterValue('a', 'b%26c');
- assertEquals('?a=b%2526c', uri.toString());
- assertEquals('a=b%26c', uri.getDecodedQuery());
- assertEquals('a=b%2526c', uri.getEncodedQuery());
- assertEquals('a=b%2526c', uri.getQuery()); // returns encoded value
-}
-
-
-// Tests that building a URI with a query string and then reading it back
-// gives the same result.
-function testQueryNotModified() {
- assertEquals('?foo', new goog.Uri('?foo').toString());
- assertEquals('?foo=', new goog.Uri('?foo=').toString());
- assertEquals('?foo=bar', new goog.Uri('?foo=bar').toString());
- assertEquals('?&=&=&', new goog.Uri('?&=&=&').toString());
-}
-
-function testRelativePathNotUnescapedWithColon() {
- assertEquals('javascript%3aalert(1)',
- new goog.Uri('javascript%3aalert(1)').toString());
-}
-
-function testAbsolutePathUnescapedWithColon() {
- assertEquals('/javascript:alert(1)',
- new goog.Uri('/javascript%3aalert(1)').toString());
- assertEquals('http://www.foo.bar/path:with:colon/x',
- new goog.Uri('http://www.foo.bar/path:with:colon/x').toString());
- assertEquals('//www.foo.bar/path:with:colon/x',
- new goog.Uri('//www.foo.bar/path:with:colon/x').toString());
-}
-
-function assertDotRemovedEquals(expected, path) {
- assertEquals(expected, goog.Uri.removeDotSegments(path));
-}
-
-function assertResolvedEquals(expected, base, other) {
- assertEquals(expected, goog.Uri.resolve(base, other).toString());
-}
-
-</script>
-</body>
-</html>