as3corelib 0.1.0 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -4
- data/Gemfile.lock +7 -4
- data/README.textile +20 -10
- data/Rakefile +32 -2
- data/as3corelib.gemspec +13 -11
- data/lib/as3corelib.rb +10 -4
- data/lib/as3corelib/version.rb +4 -0
- metadata +31 -121
- data/build/build.properties +0 -48
- data/build/build.xml +0 -104
- data/examples/JSONExample/JSONExample.mxml +0 -73
- data/src/com/adobe/air/crypto/EncryptionKeyGenerator.as +0 -313
- data/src/com/adobe/air/filesystem/FileMonitor.as +0 -245
- data/src/com/adobe/air/filesystem/FileUtil.as +0 -63
- data/src/com/adobe/air/filesystem/VolumeMonitor.as +0 -184
- data/src/com/adobe/air/filesystem/events/FileMonitorEvent.as +0 -61
- data/src/com/adobe/air/logging/FileTarget.as +0 -95
- data/src/com/adobe/air/net/ResourceCache.as +0 -165
- data/src/com/adobe/air/net/events/ResourceCacheEvent.as +0 -70
- data/src/com/adobe/crypto/HMAC.as +0 -127
- data/src/com/adobe/crypto/MD5.as +0 -281
- data/src/com/adobe/crypto/MD5Stream.as +0 -402
- data/src/com/adobe/crypto/SHA1.as +0 -289
- data/src/com/adobe/crypto/SHA224.as +0 -257
- data/src/com/adobe/crypto/SHA256.as +0 -261
- data/src/com/adobe/crypto/WSSEUsernameToken.as +0 -114
- data/src/com/adobe/errors/IllegalStateError.as +0 -63
- data/src/com/adobe/fileformats/vcard/Address.as +0 -47
- data/src/com/adobe/fileformats/vcard/Email.as +0 -39
- data/src/com/adobe/fileformats/vcard/Phone.as +0 -39
- data/src/com/adobe/fileformats/vcard/VCard.as +0 -54
- data/src/com/adobe/fileformats/vcard/VCardParser.as +0 -246
- data/src/com/adobe/images/BitString.as +0 -39
- data/src/com/adobe/images/JPGEncoder.as +0 -648
- data/src/com/adobe/images/PNGEncoder.as +0 -141
- data/src/com/adobe/net/DynamicURLLoader.as +0 -55
- data/src/com/adobe/net/IURIResolver.as +0 -76
- data/src/com/adobe/net/MimeTypeMap.as +0 -200
- data/src/com/adobe/net/URI.as +0 -2466
- data/src/com/adobe/net/URIEncodingBitmap.as +0 -139
- data/src/com/adobe/net/proxies/RFC2817Socket.as +0 -198
- data/src/com/adobe/protocols/dict/Database.as +0 -66
- data/src/com/adobe/protocols/dict/Definition.as +0 -71
- data/src/com/adobe/protocols/dict/Dict.as +0 -360
- data/src/com/adobe/protocols/dict/DictionaryServer.as +0 -60
- data/src/com/adobe/protocols/dict/MatchStrategy.as +0 -66
- data/src/com/adobe/protocols/dict/Response.as +0 -71
- data/src/com/adobe/protocols/dict/events/ConnectedEvent.as +0 -53
- data/src/com/adobe/protocols/dict/events/DatabaseEvent.as +0 -67
- data/src/com/adobe/protocols/dict/events/DefinitionEvent.as +0 -70
- data/src/com/adobe/protocols/dict/events/DefinitionHeaderEvent.as +0 -69
- data/src/com/adobe/protocols/dict/events/DictionaryServerEvent.as +0 -69
- data/src/com/adobe/protocols/dict/events/DisconnectedEvent.as +0 -55
- data/src/com/adobe/protocols/dict/events/ErrorEvent.as +0 -80
- data/src/com/adobe/protocols/dict/events/MatchEvent.as +0 -67
- data/src/com/adobe/protocols/dict/events/MatchStrategiesEvent.as +0 -70
- data/src/com/adobe/protocols/dict/events/NoMatchEvent.as +0 -54
- data/src/com/adobe/protocols/dict/util/CompleteResponseEvent.as +0 -68
- data/src/com/adobe/protocols/dict/util/SocketHelper.as +0 -81
- data/src/com/adobe/serialization/json/JSON.as +0 -86
- data/src/com/adobe/serialization/json/JSONDecoder.as +0 -327
- data/src/com/adobe/serialization/json/JSONEncoder.as +0 -312
- data/src/com/adobe/serialization/json/JSONParseError.as +0 -87
- data/src/com/adobe/serialization/json/JSONToken.as +0 -104
- data/src/com/adobe/serialization/json/JSONTokenType.as +0 -69
- data/src/com/adobe/serialization/json/JSONTokenizer.as +0 -702
- data/src/com/adobe/utils/ArrayUtil.as +0 -187
- data/src/com/adobe/utils/DateUtil.as +0 -701
- data/src/com/adobe/utils/DictionaryUtil.as +0 -87
- data/src/com/adobe/utils/IntUtil.as +0 -99
- data/src/com/adobe/utils/NumberFormatter.as +0 -74
- data/src/com/adobe/utils/StringUtil.as +0 -239
- data/src/com/adobe/utils/XMLUtil.as +0 -168
- data/src/com/adobe/webapis/ServiceBase.as +0 -48
- data/src/com/adobe/webapis/URLLoaderBase.as +0 -108
- data/src/com/adobe/webapis/events/ServiceEvent.as +0 -82
- data/tests/src/CoreLibTestRunner-app.xml +0 -135
- data/tests/src/CoreLibTestRunner.as +0 -138
- data/tests/src/CoreLibTestRunner.mxml +0 -46
- data/tests/src/com/adobe/air/crypto/EncryptionKeyGeneratorTest.as +0 -176
- data/tests/src/com/adobe/air/filesystem/FileMonitorTest.as +0 -63
- data/tests/src/com/adobe/air/filesystem/VolumeMonitorTest.as +0 -57
- data/tests/src/com/adobe/air/filesystem/events/FileMonitorEventTest.as +0 -59
- data/tests/src/com/adobe/air/net/events/ResourceCacheEventTest.as +0 -72
- data/tests/src/com/adobe/crypto/HMACMD5Test.as +0 -134
- data/tests/src/com/adobe/crypto/HMACSHA1Test.as +0 -138
- data/tests/src/com/adobe/crypto/MD5Test.as +0 -82
- data/tests/src/com/adobe/crypto/SHA1Test.as +0 -151
- data/tests/src/com/adobe/crypto/SHA224Test.as +0 -104
- data/tests/src/com/adobe/crypto/SHA256Test.as +0 -116
- data/tests/src/com/adobe/crypto/WSSEUsernameTokenTest.as +0 -87
- data/tests/src/com/adobe/images/JPGEncoderTest.as +0 -54
- data/tests/src/com/adobe/images/PNGEncoderTest.as +0 -54
- data/tests/src/com/adobe/net/URITest.as +0 -589
- data/tests/src/com/adobe/protocols/events/ConnectedEventTest.as +0 -59
- data/tests/src/com/adobe/protocols/events/DatabaseEventTest.as +0 -62
- data/tests/src/com/adobe/protocols/events/DefinitionEventTest.as +0 -61
- data/tests/src/com/adobe/protocols/events/DefinitionHeaderEventTest.as +0 -61
- data/tests/src/com/adobe/protocols/events/DictionaryServerEventTest.as +0 -61
- data/tests/src/com/adobe/protocols/events/DisconnectedEventTest.as +0 -59
- data/tests/src/com/adobe/protocols/events/ErrorEventTest.as +0 -63
- data/tests/src/com/adobe/protocols/events/MatchEventTest.as +0 -61
- data/tests/src/com/adobe/protocols/events/MatchStrategiesEventTest.as +0 -61
- data/tests/src/com/adobe/protocols/events/NoMatchEventTest.as +0 -58
- data/tests/src/com/adobe/protocols/util/CompletedResponseEventTest.as +0 -60
- data/tests/src/com/adobe/serialization/json/JSONTest.as +0 -522
- data/tests/src/com/adobe/serialization/json/SimpleClass.as +0 -85
- data/tests/src/com/adobe/utils/ArrayUtilTest.as +0 -173
- data/tests/src/com/adobe/utils/DateUtilTest.as +0 -436
- data/tests/src/com/adobe/utils/DictionaryUtilTest.as +0 -93
- data/tests/src/com/adobe/utils/IntUtilTest.as +0 -73
- data/tests/src/com/adobe/utils/NumberFormatterTest.as +0 -70
- data/tests/src/com/adobe/utils/StringUtilTest.as +0 -304
- data/tests/src/com/adobe/utils/XMLUtilTest.as +0 -101
- data/tests/src/com/adobe/webapis/events/ServiceEventTest.as +0 -66
@@ -1,54 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2008, Adobe Systems Incorporated
|
3
|
-
All rights reserved.
|
4
|
-
|
5
|
-
Redistribution and use in source and binary forms, with or without
|
6
|
-
modification, are permitted provided that the following conditions are
|
7
|
-
met:
|
8
|
-
|
9
|
-
* Redistributions of source code must retain the above copyright notice,
|
10
|
-
this list of conditions and the following disclaimer.
|
11
|
-
|
12
|
-
* Redistributions in binary form must reproduce the above copyright
|
13
|
-
notice, this list of conditions and the following disclaimer in the
|
14
|
-
documentation and/or other materials provided with the distribution.
|
15
|
-
|
16
|
-
* Neither the name of Adobe Systems Incorporated nor the names of its
|
17
|
-
contributors may be used to endorse or promote products derived from
|
18
|
-
this software without specific prior written permission.
|
19
|
-
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
21
|
-
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
22
|
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
23
|
-
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
24
|
-
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
-
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
26
|
-
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
27
|
-
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
28
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
29
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
30
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package com.adobe.images
|
34
|
-
{
|
35
|
-
import flexunit.framework.TestCase;
|
36
|
-
import flexunit.framework.TestSuite;
|
37
|
-
import com.adobe.images.JPGEncoder;
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
public class JPGEncoderTest extends TestCase
|
42
|
-
{
|
43
|
-
public function JPGEncoderTest(methodName:String = null)
|
44
|
-
{
|
45
|
-
super(methodName);
|
46
|
-
}
|
47
|
-
|
48
|
-
public function testConstructor():void
|
49
|
-
{
|
50
|
-
var j:JPGEncoder = new JPGEncoder();
|
51
|
-
}
|
52
|
-
|
53
|
-
}
|
54
|
-
}
|
@@ -1,54 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2008, Adobe Systems Incorporated
|
3
|
-
All rights reserved.
|
4
|
-
|
5
|
-
Redistribution and use in source and binary forms, with or without
|
6
|
-
modification, are permitted provided that the following conditions are
|
7
|
-
met:
|
8
|
-
|
9
|
-
* Redistributions of source code must retain the above copyright notice,
|
10
|
-
this list of conditions and the following disclaimer.
|
11
|
-
|
12
|
-
* Redistributions in binary form must reproduce the above copyright
|
13
|
-
notice, this list of conditions and the following disclaimer in the
|
14
|
-
documentation and/or other materials provided with the distribution.
|
15
|
-
|
16
|
-
* Neither the name of Adobe Systems Incorporated nor the names of its
|
17
|
-
contributors may be used to endorse or promote products derived from
|
18
|
-
this software without specific prior written permission.
|
19
|
-
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
21
|
-
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
22
|
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
23
|
-
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
24
|
-
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
-
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
26
|
-
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
27
|
-
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
28
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
29
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
30
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package com.adobe.images
|
34
|
-
{
|
35
|
-
import flexunit.framework.TestCase;
|
36
|
-
import flexunit.framework.TestSuite;
|
37
|
-
import com.adobe.images.PNGEncoder;
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
public class PNGEncoderTest extends TestCase
|
42
|
-
{
|
43
|
-
public function PNGEncoderTest(methodName:String = null)
|
44
|
-
{
|
45
|
-
super(methodName);
|
46
|
-
}
|
47
|
-
|
48
|
-
public function testConstructor():void
|
49
|
-
{
|
50
|
-
var p:PNGEncoder = new PNGEncoder();
|
51
|
-
}
|
52
|
-
|
53
|
-
}
|
54
|
-
}
|
@@ -1,589 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2008, Adobe Systems Incorporated
|
3
|
-
All rights reserved.
|
4
|
-
|
5
|
-
Redistribution and use in source and binary forms, with or without
|
6
|
-
modification, are permitted provided that the following conditions are
|
7
|
-
met:
|
8
|
-
|
9
|
-
* Redistributions of source code must retain the above copyright notice,
|
10
|
-
this list of conditions and the following disclaimer.
|
11
|
-
|
12
|
-
* Redistributions in binary form must reproduce the above copyright
|
13
|
-
notice, this list of conditions and the following disclaimer in the
|
14
|
-
documentation and/or other materials provided with the distribution.
|
15
|
-
|
16
|
-
* Neither the name of Adobe Systems Incorporated nor the names of its
|
17
|
-
contributors may be used to endorse or promote products derived from
|
18
|
-
this software without specific prior written permission.
|
19
|
-
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
21
|
-
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
22
|
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
23
|
-
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
24
|
-
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
-
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
26
|
-
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
27
|
-
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
28
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
29
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
30
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package com.adobe.net
|
34
|
-
{
|
35
|
-
import flexunit.framework.TestCase;
|
36
|
-
import flexunit.framework.TestSuite;
|
37
|
-
|
38
|
-
import com.adobe.net.URI;
|
39
|
-
import com.adobe.net.IURIResolver;
|
40
|
-
|
41
|
-
public class URITest extends TestCase implements IURIResolver
|
42
|
-
{
|
43
|
-
public function URITest( methodName:String=null )
|
44
|
-
{
|
45
|
-
super( methodName );
|
46
|
-
}
|
47
|
-
|
48
|
-
/**
|
49
|
-
*
|
50
|
-
*/
|
51
|
-
public function testParsing() : void
|
52
|
-
{
|
53
|
-
var mt:String = "";
|
54
|
-
|
55
|
-
parseAndTest("http://test.com", "http", mt, mt, "test.com",
|
56
|
-
mt, mt, mt, mt, mt);
|
57
|
-
|
58
|
-
parseAndTest("http://test.com/", "http", mt, mt, "test.com",
|
59
|
-
mt, "/", mt, mt, mt);
|
60
|
-
|
61
|
-
parseAndTest("http://test.com:80", "http", mt, mt, "test.com",
|
62
|
-
"80", mt, mt, mt, mt);
|
63
|
-
|
64
|
-
parseAndTest("http://www.test.com/my/path/file.html",
|
65
|
-
"http", mt, mt, "www.test.com", mt, "/my/path/file.html", mt, mt, mt);
|
66
|
-
|
67
|
-
parseAndTest("http://www.test.com/?query=yes&name=bob",
|
68
|
-
"http", mt, mt, "www.test.com", mt, "/", "query=yes&name=bob", mt, mt);
|
69
|
-
|
70
|
-
parseAndTest("http://www.test.com/index.html#foo",
|
71
|
-
"http", mt, mt, "www.test.com", mt, "/index.html", mt, "foo", mt);
|
72
|
-
|
73
|
-
parseAndTest("http://www.test.com/#foo", "http",
|
74
|
-
mt, mt, "www.test.com", mt, "/", mt, "foo", mt);
|
75
|
-
|
76
|
-
parseAndTest("http://www.test.com/?test=1©=yes",
|
77
|
-
"http", mt, mt, "www.test.com", mt, "/", "test=1©=yes", mt, mt);
|
78
|
-
|
79
|
-
// Test everything
|
80
|
-
parseAndTest("https://bobarino:password37$%25@test.com:9100/path/to/file.html?param1=foo¶m2=bar#anchor",
|
81
|
-
"https", "bobarino", "password37$%", "test.com", "9100",
|
82
|
-
"/path/to/file.html", "param1=foo¶m2=bar", "anchor", mt);
|
83
|
-
|
84
|
-
// Test everything with escaped characters and characters that
|
85
|
-
// may be considered borderline.
|
86
|
-
parseAndTest("https://bobarino%3A:pass%3Aword37$@test.com:9100/pa%3Fth/to/fi:le.html?param1=:¶m2=?#anchor%23",
|
87
|
-
"https", "bobarino:", "pass:word37$", "test.com", "9100",
|
88
|
-
"/pa?th/to/fi:le.html", "param1=:¶m2=?", "anchor#", mt);
|
89
|
-
|
90
|
-
// Test the common case where people embed another URI in the
|
91
|
-
// query part of the base URI. This is often used when
|
92
|
-
// communicating through a proxy. We don't want to break or
|
93
|
-
// escape more characters than needed.
|
94
|
-
parseAndTest("http://jim:%25password%25@someproxy.com:8877/proxy.php?url=http://othersite.com/path/to/file.html&proxyparam=doit#proxyanchor",
|
95
|
-
"http", "jim", "%password%", "someproxy.com", "8877",
|
96
|
-
"/proxy.php", "url=http://othersite.com/path/to/file.html&proxyparam=doit",
|
97
|
-
"proxyanchor", mt);
|
98
|
-
}
|
99
|
-
|
100
|
-
public function testRelativeParsing() : void
|
101
|
-
{
|
102
|
-
var mt:String = "";
|
103
|
-
|
104
|
-
// Yes, "www.test.com" is a relative URI. To us, it seems natural that
|
105
|
-
// it should be the host name, but without a scheme, its relative.
|
106
|
-
// For example, "www.tar.gz" is a UNIX tar/gzip file and is relative.
|
107
|
-
// Whats the difference between "www.test.com" and "www.tar.gz"? If it
|
108
|
-
// has no scheme, it is relative. Period. URI::UnknownToURI tries to
|
109
|
-
// be smart, but the problem is that it could make a wrong guess in
|
110
|
-
// certain situations.
|
111
|
-
parseAndTest("www.test.com", mt, mt, mt, mt, mt,
|
112
|
-
"www.test.com", mt, mt, mt);
|
113
|
-
|
114
|
-
// Just a fragment (anchor)
|
115
|
-
parseAndTest("#foo", mt, mt, mt, mt, mt, mt, mt,
|
116
|
-
"foo", mt);
|
117
|
-
|
118
|
-
// queries can have ';' as an alternative separator to '&'
|
119
|
-
parseAndTest("?query=yes;this=that#foo",
|
120
|
-
mt, mt, mt, mt, mt, mt, "query=yes;this=that", "foo", mt);
|
121
|
-
|
122
|
-
parseAndTest("/images?blah:somequery",
|
123
|
-
mt, mt, mt, mt, mt, "/images", "blah:somequery", mt, mt);
|
124
|
-
|
125
|
-
parseAndTest("/images?blah:somequery#anchor",
|
126
|
-
mt, mt, mt, mt, mt, "/images", "blah:somequery", "anchor", mt);
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
public function testUnknownParsing() : void
|
131
|
-
{
|
132
|
-
var mt:String = "";
|
133
|
-
|
134
|
-
// Something missing the scheme
|
135
|
-
parseUnknownAndTest(
|
136
|
-
"www.somesite.com", // input
|
137
|
-
"http://www.somesite.com", // expected
|
138
|
-
"http", mt, mt, "www.somesite.com", mt, mt, mt ,mt ,mt);
|
139
|
-
|
140
|
-
// URI missing a scheme, but has slashes
|
141
|
-
parseUnknownAndTest(
|
142
|
-
"//server/path/to/file.html", // input
|
143
|
-
"http://server/path/to/file.html", // expected
|
144
|
-
"http", mt, mt, "server", mt, "/path/to/file.html", mt, mt, mt);
|
145
|
-
|
146
|
-
// Missing scheme with everything else
|
147
|
-
parseUnknownAndTest(
|
148
|
-
"://user:pass@server:8080/path/to/file.html?param1=value1#anchor",
|
149
|
-
"http://user:pass@server:8080/path/to/file.html?param1=value1#anchor",
|
150
|
-
"http", "user", "pass", "server", "8080",
|
151
|
-
"/path/to/file.html", "param1=value1", "anchor", mt);
|
152
|
-
|
153
|
-
// Make sure the unknown handles the case of a real and valid URI
|
154
|
-
parseUnknownAndTest(
|
155
|
-
"http://user:pass@www.somesite.com:200/path/to/file.html?query#foo",
|
156
|
-
"http://user:pass@www.somesite.com:200/path/to/file.html?query#foo",
|
157
|
-
"http", "user", "pass", "www.somesite.com", "200",
|
158
|
-
"/path/to/file.html", "query", "foo", mt);
|
159
|
-
|
160
|
-
// A valid non-hierarchical URI
|
161
|
-
parseUnknownAndTest("mailto:bob@smith.com",
|
162
|
-
"mailto:bob@smith.com",
|
163
|
-
"mailto", mt, mt, mt, mt, mt, mt, mt, "bob@smith.com");
|
164
|
-
|
165
|
-
// malformed URI. Some people like to type backslashes
|
166
|
-
// instead of forward slashes.
|
167
|
-
parseUnknownAndTest(
|
168
|
-
"http:\\\\somesite.com\\path\\to\\file.html",
|
169
|
-
"http://somesite.com/path/to/file.html",
|
170
|
-
"http", mt, mt, "somesite.com", mt, "/path/to/file.html", mt, mt, mt);
|
171
|
-
|
172
|
-
// A valid relative URI. Note that UnknownToURI will only detect
|
173
|
-
// relative paths that start with ".", or "..". Otherwise, it will
|
174
|
-
// guess that the path is just something missing the scheme.
|
175
|
-
parseUnknownAndTest(
|
176
|
-
"../../images/logo.gif",
|
177
|
-
"../../images/logo.gif",
|
178
|
-
mt, mt, mt, mt, mt, "../../images/logo.gif", mt, mt, mt);
|
179
|
-
}
|
180
|
-
|
181
|
-
public function testNonHierarchical() : void
|
182
|
-
{
|
183
|
-
var mt:String = "";
|
184
|
-
|
185
|
-
parseAndTest("mailto:bob@smith.com",
|
186
|
-
"mailto", mt, mt, mt, mt, mt, mt, mt, "bob@smith.com");
|
187
|
-
|
188
|
-
parseAndTest("about:blank?foo=bar#baz",
|
189
|
-
"about", mt, mt, mt, mt, mt, "foo=bar", "baz", "blank");
|
190
|
-
}
|
191
|
-
|
192
|
-
/**
|
193
|
-
* This tests the getRelation() method of URI. Given two URI's,
|
194
|
-
* determine the relation of the two relative to the object that
|
195
|
-
* getRelation() is called on.
|
196
|
-
*/
|
197
|
-
public function testEquivalence() : void
|
198
|
-
{
|
199
|
-
// The same
|
200
|
-
parseAndCompare("http://a/b/c/d", "http://a/b/c/d", URI.EQUAL, URI.EQUAL);
|
201
|
-
|
202
|
-
// Parent/child
|
203
|
-
parseAndCompare("http://a/b/c/d/", "http://a/b/c/d/e/f/", URI.PARENT, URI.CHILD);
|
204
|
-
|
205
|
-
// Not related. They are in different branches.
|
206
|
-
parseAndCompare("http://a/b/c/g", "http://a/b/c/d/e/f/", URI.NOT_RELATED, URI.NOT_RELATED);
|
207
|
-
|
208
|
-
// special case
|
209
|
-
parseAndCompare("http://somesite.com/", "http://somesite.com", URI.EQUAL, URI.EQUAL);
|
210
|
-
|
211
|
-
// non-hierarchical
|
212
|
-
parseAndCompare("mailto:bob@smith.com", "mailto:bob@smith.com", URI.EQUAL, URI.EQUAL);
|
213
|
-
parseAndCompare("mailto:bob@smith.com", "mailto:sue@company.com", URI.NOT_RELATED, URI.NOT_RELATED);
|
214
|
-
parseAndCompare("mailto:bob@smith.com", "http://test.com", URI.NOT_RELATED, URI.NOT_RELATED);
|
215
|
-
|
216
|
-
// different schemes
|
217
|
-
parseAndCompare("http://test.com", "https://test.com", URI.NOT_RELATED, URI.NOT_RELATED);
|
218
|
-
|
219
|
-
// test default port
|
220
|
-
parseAndCompare("http://test.com:80", "http://test.com", URI.EQUAL, URI.EQUAL);
|
221
|
-
parseAndCompare("http://test.com:81", "http://test.com", URI.NOT_RELATED, URI.NOT_RELATED);
|
222
|
-
|
223
|
-
// test dynamic resolution.
|
224
|
-
URI.resolver = this;
|
225
|
-
parseAndCompare("http://test.com", "http://test.org", URI.EQUAL, URI.EQUAL);
|
226
|
-
|
227
|
-
// GetRelation() does not take into account query and fragment
|
228
|
-
// parts. This is probably an edge case that we do not handle
|
229
|
-
// at this time. If we ever modify GetRelation() to handle
|
230
|
-
// that case, we need to add test cases here.
|
231
|
-
}
|
232
|
-
|
233
|
-
public function testEscaping() : void
|
234
|
-
{
|
235
|
-
var uri:URI = new URI();
|
236
|
-
|
237
|
-
uri.setParts("http", "test.com", "80", "/my path/with %weird/chars",
|
238
|
-
"search=~&name={bob}", "five%");
|
239
|
-
|
240
|
-
assertEquals("Characters not properly escaped.",
|
241
|
-
"http://test.com:80/my%20path/with%20%25weird/chars?search=~&name={bob}#five%25",
|
242
|
-
uri.toString());
|
243
|
-
|
244
|
-
var test:String = "http://test.com/ funky/{path}";
|
245
|
-
|
246
|
-
uri = new URI(test);
|
247
|
-
uri.forceEscape();
|
248
|
-
|
249
|
-
assertEquals("Characters not properly escaped.",
|
250
|
-
"http://test.com/%20%20funky/{path}", uri.toString());
|
251
|
-
|
252
|
-
// Make sure the display version does not include escaped chars.
|
253
|
-
assertEquals("toDisplayString() failed.", test, uri.toDisplayString());
|
254
|
-
}
|
255
|
-
|
256
|
-
public function parseAndCompare(str1:String, str2:String, rel1:int, rel2:int) : void
|
257
|
-
{
|
258
|
-
var uri1:URI, uri2:URI;
|
259
|
-
var result1:int, result2:int;
|
260
|
-
|
261
|
-
uri1 = new URI(str1);
|
262
|
-
uri2 = new URI(str2);
|
263
|
-
|
264
|
-
result1 = uri1.getRelation(uri2);
|
265
|
-
result2 = uri2.getRelation(uri1); // swapped
|
266
|
-
|
267
|
-
assertTrue("Relation check failed.", result1 == rel1);
|
268
|
-
assertTrue("Relation check failed.", result2 == rel2);
|
269
|
-
|
270
|
-
// Make sure nothing got modified.
|
271
|
-
assertEquals("getRelation() modified uri1.", str1, uri1.toString());
|
272
|
-
assertEquals("getRelation() modified uri2.", str2, uri2.toString());
|
273
|
-
}
|
274
|
-
|
275
|
-
|
276
|
-
protected function parseUnknownAndTest(
|
277
|
-
inURI:String, expectedURI:String, scheme:String,
|
278
|
-
username:String, password:String, authority:String,
|
279
|
-
port:String, path:String, query:String, fragment:String,
|
280
|
-
nonHierarchical:String) : void
|
281
|
-
{
|
282
|
-
var uri:URI = new URI();
|
283
|
-
|
284
|
-
uri.unknownToURI(inURI);
|
285
|
-
|
286
|
-
// We expect all cases to produce a valid URI
|
287
|
-
assertTrue("URI is invalid.", uri.isValid());
|
288
|
-
|
289
|
-
// Make sure we get out what we expect
|
290
|
-
assertEquals("URI.toString() should output what we input.", expectedURI, uri.toString());
|
291
|
-
|
292
|
-
if (uri.isHierarchical())
|
293
|
-
{
|
294
|
-
assertEquals("URI.scheme should be the same.", scheme, uri.scheme);
|
295
|
-
assertEquals("URI.username should be the same.", username, uri.username);
|
296
|
-
assertEquals("URI.password should be the same.", password, uri.password);
|
297
|
-
assertEquals("URI.authority should be the same.", authority, uri.authority);
|
298
|
-
assertEquals("URI.port should be the same.", port, uri.port);
|
299
|
-
assertEquals("URI.path should be the same.", path, uri.path);
|
300
|
-
assertEquals("URI.query should be the same.", query, uri.query);
|
301
|
-
assertEquals("URI.fragment should be the same.", fragment, uri.fragment);
|
302
|
-
}
|
303
|
-
else
|
304
|
-
{
|
305
|
-
assertEquals("URI.scheme should be the same.", scheme, uri.scheme);
|
306
|
-
assertEquals("URI.nonHierarchical should be the same.", nonHierarchical, uri.nonHierarchical);
|
307
|
-
assertEquals("URI.query should be the same.", query, uri.query);
|
308
|
-
assertEquals("URI.fragment should be the same.", fragment, uri.fragment);
|
309
|
-
}
|
310
|
-
}
|
311
|
-
|
312
|
-
/**
|
313
|
-
* This function takes a URI in string form and a set
|
314
|
-
* of expected results for each of the URI parts. This
|
315
|
-
* function loads the 'inURI' string into a URI object
|
316
|
-
* and then compares the resulting object parts to the
|
317
|
-
* given expected result strings.
|
318
|
-
*/
|
319
|
-
protected function parseAndTest(inURI:String,
|
320
|
-
scheme:String, username:String, password:String,
|
321
|
-
authority:String, port:String,
|
322
|
-
path:String, query:String, fragment:String,
|
323
|
-
nonHierarchical:String) : void
|
324
|
-
{
|
325
|
-
var result:Boolean = true;
|
326
|
-
|
327
|
-
// Construct our test URI
|
328
|
-
var uri:URI = new URI(inURI);
|
329
|
-
|
330
|
-
// Make sure we get out what we put in.
|
331
|
-
assertEquals("URI.toString() should output what we input.", inURI, uri.toString());
|
332
|
-
|
333
|
-
if (uri.isHierarchical())
|
334
|
-
{
|
335
|
-
assertEquals("URI.scheme should be the same.", scheme, uri.scheme);
|
336
|
-
assertEquals("URI.username should be the same.", username, uri.username);
|
337
|
-
assertEquals("URI.password should be the same.", password, uri.password);
|
338
|
-
assertEquals("URI.authority should be the same.", authority, uri.authority);
|
339
|
-
assertEquals("URI.port should be the same.", port, uri.port);
|
340
|
-
assertEquals("URI.path should be the same.", path, uri.path);
|
341
|
-
assertEquals("URI.query should be the same.", query, uri.query);
|
342
|
-
assertEquals("URI.fragment should be the same.", fragment, uri.fragment);
|
343
|
-
}
|
344
|
-
else
|
345
|
-
{
|
346
|
-
assertEquals("URI.scheme should be the same.", scheme, uri.scheme);
|
347
|
-
assertEquals("URI.nonHierarchical should be the same.", nonHierarchical, uri.nonHierarchical);
|
348
|
-
assertEquals("URI.query should be the same.", query, uri.query);
|
349
|
-
assertEquals("URI.fragment should be the same.", fragment, uri.fragment);
|
350
|
-
}
|
351
|
-
|
352
|
-
// Now perform the test the other way. Set all the members
|
353
|
-
// and compare the toString() to the given URI.
|
354
|
-
if (nonHierarchical.length > 0)
|
355
|
-
{
|
356
|
-
uri = new URI();
|
357
|
-
|
358
|
-
uri.scheme = scheme;
|
359
|
-
uri.nonHierarchical = nonHierarchical;
|
360
|
-
uri.query = query;
|
361
|
-
uri.fragment = fragment;
|
362
|
-
|
363
|
-
assertEquals("URI.toString() should be the same.", uri.toString(), inURI);
|
364
|
-
}
|
365
|
-
else
|
366
|
-
{
|
367
|
-
uri = new URI();
|
368
|
-
|
369
|
-
uri.scheme = scheme;
|
370
|
-
uri.username = username;
|
371
|
-
uri.password = password;
|
372
|
-
uri.authority = authority;
|
373
|
-
uri.port = port;
|
374
|
-
uri.path = path;
|
375
|
-
uri.query = query;
|
376
|
-
uri.fragment = fragment;
|
377
|
-
|
378
|
-
assertEquals("URI.toString() should be the same.", inURI, uri.toString());
|
379
|
-
}
|
380
|
-
}
|
381
|
-
|
382
|
-
/**
|
383
|
-
* This test case runs through a large number of cases that exercises
|
384
|
-
* the chdir(), makeAbsolute(), and makeRelative() functions.
|
385
|
-
*/
|
386
|
-
public function testAbsRelChDir() : void
|
387
|
-
{
|
388
|
-
// ***
|
389
|
-
// These tests are taken directly from the URI RFC.
|
390
|
-
// ***
|
391
|
-
|
392
|
-
// Note that the ';' is part of the file name. It's not
|
393
|
-
// some special character.
|
394
|
-
var base:String = "http://a/b/c/d;p?q";
|
395
|
-
|
396
|
-
// A full URI completely replaces the old one. The RFC used "g:h" for
|
397
|
-
// their example, but we use "gj:hk" because we assume that a single
|
398
|
-
// character scheme is most likely a "C:\" style path. The test is
|
399
|
-
// the same.
|
400
|
-
doTestChDir(base, "gj:hk", "gj:hk", true);
|
401
|
-
|
402
|
-
doTestChDir(base, "g", "http://a/b/c/g");
|
403
|
-
doTestChDir(base, "./g", "http://a/b/c/g");
|
404
|
-
doTestChDir(base, "g/", "http://a/b/c/g/");
|
405
|
-
doTestChDir(base, "/g", "http://a/g");
|
406
|
-
|
407
|
-
// The "//" is the delimiter for an authority.
|
408
|
-
// This kind of "path" replaces everything after
|
409
|
-
// the scheme.
|
410
|
-
doTestChDir(base, "//g", "http://g", true);
|
411
|
-
|
412
|
-
doTestChDir(base, "?y", "http://a/b/c/?y");
|
413
|
-
doTestChDir(base, "g?y", "http://a/b/c/g?y");
|
414
|
-
doTestChDir(base, "#s", "http://a/b/c/d;p?q#s");
|
415
|
-
doTestChDir(base, "g#s", "http://a/b/c/g#s");
|
416
|
-
doTestChDir(base, "g?y#s", "http://a/b/c/g?y#s");
|
417
|
-
doTestChDir(base, ";x", "http://a/b/c/;x");
|
418
|
-
doTestChDir(base, "g;x", "http://a/b/c/g;x");
|
419
|
-
doTestChDir(base, "g;x?y#s", "http://a/b/c/g;x?y#s");
|
420
|
-
doTestChDir(base, ".", "http://a/b/c/");
|
421
|
-
doTestChDir(base, "./", "http://a/b/c/");
|
422
|
-
doTestChDir(base, "..", "http://a/b/");
|
423
|
-
doTestChDir(base, "../", "http://a/b/");
|
424
|
-
doTestChDir(base, "../g", "http://a/b/g");
|
425
|
-
doTestChDir(base, "../..", "http://a/");
|
426
|
-
doTestChDir(base, "../../", "http://a/");
|
427
|
-
doTestChDir(base, "../../g", "http://a/g");
|
428
|
-
|
429
|
-
// *** Abnormal cases ***
|
430
|
-
// These are cases where the input goes beyond the scope of the URI.
|
431
|
-
// We need to handle these gracefully if possible.
|
432
|
-
doTestChDir(base, "../../../g", "http://a/g");
|
433
|
-
doTestChDir(base, "../../../../g", "http://a/g");
|
434
|
-
|
435
|
-
// These are absolute. Notice that the "." and ".." are not
|
436
|
-
// collapsed here. We won't do Abs/Rel tests on them (the true)
|
437
|
-
// because they just too abnormal. Just make sure ChDir works.
|
438
|
-
doTestChDir(base, "/./g", "http://a/./g", true);
|
439
|
-
doTestChDir(base, "/../g", "http://a/../g", true);
|
440
|
-
|
441
|
-
doTestChDir(base, "g.", "http://a/b/c/g.");
|
442
|
-
doTestChDir(base, ".g", "http://a/b/c/.g");
|
443
|
-
doTestChDir(base, "g..", "http://a/b/c/g..");
|
444
|
-
doTestChDir(base, "..g", "http://a/b/c/..g");
|
445
|
-
doTestChDir(base, "./../g", "http://a/b/g");
|
446
|
-
doTestChDir(base, "./g/.", "http://a/b/c/g/");
|
447
|
-
doTestChDir(base, "g/./h", "http://a/b/c/g/h");
|
448
|
-
doTestChDir(base, "g/../h", "http://a/b/c/h");
|
449
|
-
doTestChDir(base, "g;x=1/./y", "http://a/b/c/g;x=1/y");
|
450
|
-
doTestChDir(base, "g;x=1/../y", "http://a/b/c/y");
|
451
|
-
|
452
|
-
// All client applications remove the query component from the base URI
|
453
|
-
// before resolving relative URI. However, some applications fail to
|
454
|
-
// separate the reference's query and/or fragment components from a
|
455
|
-
// relative path before merging it with the base path. This error is
|
456
|
-
// rarely noticed, since typical usage of a fragment never includes the
|
457
|
-
// hierarchy ("/") character, and the query component is not normally
|
458
|
-
// used within relative references.
|
459
|
-
doTestChDir(base, "g?y/./x", "http://a/b/c/g?y/./x");
|
460
|
-
doTestChDir(base, "g?y/../x","http://a/b/c/g?y/../x");
|
461
|
-
doTestChDir(base, "g#s/./x", "http://a/b/c/g#s/./x");
|
462
|
-
doTestChDir(base, "g#s/../x","http://a/b/c/g#s/../x");
|
463
|
-
|
464
|
-
// Custom checks dealing with relative URI's as the base.
|
465
|
-
base = "../../a/b/c";
|
466
|
-
|
467
|
-
doTestChDir(base, "d", "../../a/b/d", true);
|
468
|
-
doTestChDir(base, "../d", "../../a/d", true);
|
469
|
-
doTestChDir(base, "../../d", "../../d", true);
|
470
|
-
doTestChDir(base, "../../../d", "../../../d", true);
|
471
|
-
|
472
|
-
// One last crazy relative path
|
473
|
-
base = "../../../a";
|
474
|
-
doTestChDir(base, "../../../../d", "../../../../../../../d", true);
|
475
|
-
|
476
|
-
|
477
|
-
// Lastly, a specific check for known edge case
|
478
|
-
base = "http://a/b/c/";
|
479
|
-
var uri:URI = new URI(base);
|
480
|
-
var baseURI:URI = new URI(base);
|
481
|
-
|
482
|
-
// Making a URI relative to itself
|
483
|
-
uri.makeRelativeURI(baseURI);
|
484
|
-
assertEquals("makeRelativeURI() failed for identity case.", "./", uri.toString());
|
485
|
-
}
|
486
|
-
|
487
|
-
|
488
|
-
/**
|
489
|
-
* The main guts of testAbsRelChDir(). This takes an initial
|
490
|
-
* URI, a chdir path, and an expected result URI. It constructs
|
491
|
-
* a URI object using the initial URI string, then chdirs to
|
492
|
-
* the directory specified by 'chPath'. The expected result is
|
493
|
-
* in 'expectedURI'. This also performs some tests using
|
494
|
-
* makeAbsoluteURI() and makeRelativeURI() because we have all
|
495
|
-
* the necessary data to exercise all of these.
|
496
|
-
*
|
497
|
-
* @param inURI the initial URI
|
498
|
-
* @param chPath the path to "cd" to.
|
499
|
-
* @param expectedURI the expected result of executing the "cd" on inURI.
|
500
|
-
* @param skipAbsRelTests if true, this will skip the makeAbsolute
|
501
|
-
* and makeRelative tests. The only time you would want to pass
|
502
|
-
* true is when inURI is relative.
|
503
|
-
*/
|
504
|
-
private function doTestChDir(inURI:String, chPath:String,
|
505
|
-
expectedURI:String, skipAbsRelTests:Boolean = false) : void
|
506
|
-
{
|
507
|
-
var uri:URI = new URI(inURI);
|
508
|
-
|
509
|
-
assertEquals("chdir() sanity check", inURI, uri.toString());
|
510
|
-
|
511
|
-
uri.chdir(chPath);
|
512
|
-
|
513
|
-
assertEquals("chdir() failed.", expectedURI, uri.toString());
|
514
|
-
|
515
|
-
// We have enough info to do absolute and relative operations, so
|
516
|
-
// lets do those too, but only if it makes sense to do them.
|
517
|
-
// This function may be called with all relative paths (testing
|
518
|
-
// chdir for cases using only relative paths). We don't want to
|
519
|
-
// do makeAbsoluteURI() and makeRelativeURI() tests in that case.
|
520
|
-
if (skipAbsRelTests)
|
521
|
-
{
|
522
|
-
// Caller knows the input is not appropriate for makeRelative and
|
523
|
-
// makeAbsolute. Just stop here.
|
524
|
-
return;
|
525
|
-
}
|
526
|
-
|
527
|
-
/////////////////////////////////////////////////////////////////
|
528
|
-
// Test makeAbsoluteURI
|
529
|
-
var abs:URI = new URI(inURI);
|
530
|
-
var rel:URI = new URI(chPath);
|
531
|
-
|
532
|
-
// Make sure we get out what we put in
|
533
|
-
assertEquals("Absolute URI failed to parse.", inURI, abs.toString());
|
534
|
-
assertEquals("chPath failed to parse.", chPath, rel.toString());
|
535
|
-
|
536
|
-
rel.makeAbsoluteURI(abs);
|
537
|
-
assertEquals("makeAbsoluteURI() failed.", expectedURI, rel.toString());
|
538
|
-
|
539
|
-
// Make sure the passed URI didn't get modified.
|
540
|
-
assertEquals("ERROR! makeAbsoluteURI() modified the passed URI.", inURI, abs.toString());
|
541
|
-
|
542
|
-
|
543
|
-
/////////////////////////////////////////////////////////////////
|
544
|
-
// Test makeRelativeURI
|
545
|
-
var toRel:URI = new URI(expectedURI);
|
546
|
-
var base:URI = new URI(inURI);
|
547
|
-
var path:URI = new URI(chPath);
|
548
|
-
|
549
|
-
// Make sure we get out what we put in
|
550
|
-
assertEquals("expectedURI failed to parse.", expectedURI, toRel.toString());
|
551
|
-
|
552
|
-
toRel.makeRelativeURI(base);
|
553
|
-
|
554
|
-
// verification that makeRelativeURI() did what it was supposed to
|
555
|
-
// do is handled below.
|
556
|
-
|
557
|
-
// Make sure the passed URI didn't get modified
|
558
|
-
assertEquals("ERROR! makeRelativeURI modified the passed URI.", inURI, base.toString());
|
559
|
-
|
560
|
-
/////////////////////////////////////////////////////////////////
|
561
|
-
// We should be back to the relative path we were given.
|
562
|
-
// To test this, we ChDir on the inURI with the relative
|
563
|
-
// path we generated and the one we were given. If the
|
564
|
-
// result is the same, we are good. The reason we can't
|
565
|
-
// directly compare the two is because often we are given
|
566
|
-
// "./file" as the chPath, but we will generate "file"
|
567
|
-
var test1:URI = new URI(inURI);
|
568
|
-
var test2:URI = new URI(inURI);
|
569
|
-
|
570
|
-
test1.chdir(toRel.toString());
|
571
|
-
test2.chdir(chPath);
|
572
|
-
|
573
|
-
assertTrue("Relative path verification failed.", test1.getRelation(test2) == URI.EQUAL);
|
574
|
-
}
|
575
|
-
|
576
|
-
// Interface for IURIResolver
|
577
|
-
public function resolve(uri:URI) : URI
|
578
|
-
{
|
579
|
-
if (uri == null)
|
580
|
-
return null;
|
581
|
-
|
582
|
-
if (uri.authority == "test.org")
|
583
|
-
uri.authority = "test.com";
|
584
|
-
|
585
|
-
return uri;
|
586
|
-
}
|
587
|
-
|
588
|
-
} // end class
|
589
|
-
} // end package
|