|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
|
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 /** |
|
6 * Test that mozITXTToHTMLConv works properly. |
|
7 */ |
|
8 |
|
9 var Cc = Components.classes; |
|
10 var Ci = Components.interfaces; |
|
11 |
|
12 function run_test() { |
|
13 let converter = Cc["@mozilla.org/txttohtmlconv;1"] |
|
14 .getService(Ci.mozITXTToHTMLConv); |
|
15 |
|
16 const tests = [ |
|
17 // -- RFC1738 |
|
18 { |
|
19 input: "RFC1738: <URL:http://mozilla.org> then", |
|
20 url: "http://mozilla.org" |
|
21 }, |
|
22 // -- RFC2396E |
|
23 { |
|
24 input: "RFC2396E: <http://mozilla.org/> then", |
|
25 url: "http://mozilla.org/" |
|
26 }, |
|
27 // -- abbreviated |
|
28 { |
|
29 input: "see www.mozilla.org maybe", |
|
30 url: "http://www.mozilla.org" |
|
31 }, |
|
32 // -- freetext |
|
33 { |
|
34 input:"I mean http://www.mozilla.org/.", |
|
35 url: "http://www.mozilla.org/" |
|
36 }, |
|
37 { |
|
38 input:"you mean http://mozilla.org:80, right?", |
|
39 url: "http://mozilla.org:80" |
|
40 }, |
|
41 { |
|
42 input:"go to http://mozilla.org; then go home", |
|
43 url: "http://mozilla.org" |
|
44 }, |
|
45 { |
|
46 input:"http://mozilla.org! yay!", |
|
47 url: "http://mozilla.org" |
|
48 }, |
|
49 { |
|
50 input:"er, http://mozilla.com?", |
|
51 url: "http://mozilla.com" |
|
52 }, |
|
53 { |
|
54 input:"http://example.org- where things happen", |
|
55 url: "http://example.org" |
|
56 }, |
|
57 { |
|
58 input:"see http://mozilla.org: front page", |
|
59 url: "http://mozilla.org" |
|
60 }, |
|
61 { |
|
62 input:"'http://mozilla.org/': that's the url", |
|
63 url: "http://mozilla.org/" |
|
64 }, |
|
65 { |
|
66 input:"some special http://mozilla.org/?x=.,;!-:x", |
|
67 url: "http://mozilla.org/?x=.,;!-:x" |
|
68 }, |
|
69 { |
|
70 // escape & when producing html |
|
71 input:"'http://example.org/?test=true&success=true': ok", |
|
72 url: "http://example.org/?test=true&success=true" |
|
73 }, |
|
74 { |
|
75 input: "bracket: http://localhost/[1] etc.", |
|
76 url: "http://localhost/" |
|
77 }, |
|
78 { |
|
79 input: "parenthesis: (http://localhost/) etc.", |
|
80 url: "http://localhost/" |
|
81 }, |
|
82 { |
|
83 input: "(thunderbird)http://mozilla.org/thunderbird", |
|
84 url: "http://mozilla.org/thunderbird" |
|
85 }, |
|
86 { |
|
87 input: "()http://mozilla.org", |
|
88 url: "http://mozilla.org" |
|
89 }, |
|
90 { |
|
91 input: "parenthesis included: http://kb.mozillazine.org/Performance_(Thunderbird) etc.", |
|
92 url: "http://kb.mozillazine.org/Performance_(Thunderbird)" |
|
93 }, |
|
94 { |
|
95 input: "parenthesis slash bracket: (http://localhost/)[1] etc.", |
|
96 url: "http://localhost/" |
|
97 }, |
|
98 { |
|
99 input: "parenthesis bracket: (http://example.org[1]) etc.", |
|
100 url: "http://example.org" |
|
101 }, |
|
102 { |
|
103 input: "ipv6 1: https://[1080::8:800:200C:417A]/foo?bar=x test", |
|
104 url: "https://[1080::8:800:200C:417A]/foo?bar=x" |
|
105 }, |
|
106 { |
|
107 input: "ipv6 2: http://[::ffff:127.0.0.1]/#yay test", |
|
108 url: "http://[::ffff:127.0.0.1]/#yay" |
|
109 }, |
|
110 { |
|
111 input: "ipv6 parenthesis port: (http://[2001:db8::1]:80/) test", |
|
112 url: "http://[2001:db8::1]:80/" |
|
113 } |
|
114 ]; |
|
115 |
|
116 function hrefLink(url) { |
|
117 return ' href="' + url + '"'; |
|
118 } |
|
119 |
|
120 for (let i = 0; i < tests.length; i++) { |
|
121 let output = converter.scanTXT(tests[i].input, Ci.mozITXTToHTMLConv.kURLs); |
|
122 let link = hrefLink(tests[i].url); |
|
123 if (output.indexOf(link) == -1) |
|
124 do_throw("Unexpected conversion: input=" + tests[i].input + |
|
125 ", output=" + output + ", link=" + link); |
|
126 } |
|
127 } |