/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * Test that mozITXTToHTMLConv works properly. */ "use strict"; function run_test() { let converter = Cc["@mozilla.org/txttohtmlconv;1"].getService( Ci.mozITXTToHTMLConv ); const scanTXTtests = [ // -- RFC1738 { input: "RFC1738: then", url: "http://mozilla.org", }, { input: "RFC1738: then", url: "mailto:john.doe+test@mozilla.org", }, // -- RFC2396E { input: "RFC2396E: then", url: "http://mozilla.org/", }, { input: "RFC2396E: then", url: "mailto:john.doe+test@mozilla.org", }, // -- abbreviated { input: "see www.mozilla.org maybe", url: "http://www.mozilla.org", }, { input: "mail john.doe+test@mozilla.org maybe", url: "mailto:john.doe+test@mozilla.org", }, // -- delimiters { input: "see http://www.mozilla.org/maybe today", // Spaces url: "http://www.mozilla.org/maybe", }, { input: 'see "http://www.mozilla.org/maybe today"', // Double quotes url: "http://www.mozilla.org/maybetoday", // spaces ignored }, { input: "see ", // Angle brackets url: "http://www.mozilla.org/maybetoday", // spaces ignored }, // -- freetext { input: "I mean http://www.mozilla.org/.", url: "http://www.mozilla.org/", }, { input: "you mean http://mozilla.org:80, right?", url: "http://mozilla.org:80", }, { input: "go to http://mozilla.org; then go home", url: "http://mozilla.org", }, { input: "http://mozilla.org! yay!", url: "http://mozilla.org", }, { input: "er, http://mozilla.com?", url: "http://mozilla.com", }, { input: "http://example.org- where things happen", url: "http://example.org", }, { input: "see http://mozilla.org: front page", url: "http://mozilla.org", }, { input: "'http://mozilla.org/': that's the url", url: "http://mozilla.org/", }, { input: "some special http://mozilla.org/?x=.,;!-:x", url: "http://mozilla.org/?x=.,;!-:x", }, { // escape & when producing html input: "'http://example.org/?test=true&success=true': ok", url: "http://example.org/?test=true&success=true", }, { input: "bracket: http://localhost/[1] etc.", url: "http://localhost/", }, { input: "bracket: john.doe+test@mozilla.org[1] etc.", url: "mailto:john.doe+test@mozilla.org", }, { input: "parenthesis: (http://localhost/) etc.", url: "http://localhost/", }, { input: "parenthesis: (john.doe+test@mozilla.org) etc.", url: "mailto:john.doe+test@mozilla.org", }, { input: "(thunderbird)http://mozilla.org/thunderbird", url: "http://mozilla.org/thunderbird", }, { input: "(mail)john.doe+test@mozilla.org", url: "mailto:john.doe+test@mozilla.org", }, { input: "()http://mozilla.org", url: "http://mozilla.org", }, { input: "parenthesis included: http://kb.mozillazine.org/Performance_(Thunderbird) etc.", url: "http://kb.mozillazine.org/Performance_(Thunderbird)", }, { input: "parenthesis slash bracket: (http://localhost/)[1] etc.", url: "http://localhost/", }, { input: "parenthesis bracket: (http://example.org[1]) etc.", url: "http://example.org", }, { input: "ipv6 1: https://[1080::8:800:200C:417A]/foo?bar=x test", url: "https://[1080::8:800:200C:417A]/foo?bar=x", }, { input: "ipv6 2: http://[::ffff:127.0.0.1]/#yay test", url: "http://[::ffff:127.0.0.1]/#yay", }, { input: "ipv6 parenthesis port: (http://[2001:db8::1]:80/) test", url: "http://[2001:db8::1]:80/", }, { input: "test http://www.map.com/map.php?t=Nova_Scotia&markers=//Not_a_survey||description=plm2 test", url: "http://www.map.com/map.php?t=Nova_Scotia&markers=//Not_a_survey||description=plm2", }, { input: "bug#1509493 (john@mozilla.org)john@mozilla.org test", url: "mailto:john@mozilla.org", text: "john@mozilla.org", }, { input: "bug#1509493 {john@mozilla.org}john@mozilla.org test", url: "mailto:john@mozilla.org", text: "john@mozilla.org", }, ]; const scanTXTglyph = [ // Some "glyph" testing (not exhaustive, the system supports 16 different // smiley types). { input: "this is superscript: x^2", results: [""], }, { input: "this is plus-minus: +/-", results: ["±"], }, { input: "this is a smiley :)", results: ["🙂"], }, { input: "this is a smiley :-)", results: ["🙂"], }, { input: "this is a smiley :-(", results: ["🙁"], }, ]; const scanTXTstrings = [ "underline", // ASCII "äöüßáéíóúî", // Latin-1 "a\u0301c\u0327c\u030Ce\u0309n\u0303t\u0326e\u0308d\u0323", // áçčẻñțëḍ Latin "\u016B\u00F1\u0257\u0119\u0211\u0142\u00ED\u00F1\u0119", // Pseudo-ese ūñɗęȑłíñę "\u01DDu\u0131\u0283\u0279\u01DDpun", // Upside down ǝuıʃɹǝpun "\u03C5\u03C0\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B9\u03C3\u03B7", // Greek υπογράμμιση "\u0441\u0438\u043B\u044C\u043D\u0443\u044E", // Russian сильную "\u0C2C\u0C32\u0C2E\u0C46\u0C56\u0C28", // Telugu బలమైన "\u508D\u7DDA\u3059\u308B", // Japanese 傍線する "\uD841\uDF0E\uD841\uDF31\uD841\uDF79\uD843\uDC53\uD843\uDC78", // Chinese (supplementary plane) "\uD801\uDC14\uD801\uDC2F\uD801\uDC45\uD801\uDC28\uD801\uDC49\uD801\uDC2F\uD801\uDC3B", // Deseret 𐐔𐐯𐑅𐐨𐑉𐐯𐐻 ]; const scanTXTstructs = [ { delimiter: "/", tag: "i", class: "moz-txt-slash", }, { delimiter: "*", tag: "b", class: "moz-txt-star", }, { delimiter: "_", tag: "span", class: "moz-txt-underscore", }, { delimiter: "|", tag: "code", class: "moz-txt-verticalline", }, ]; const scanHTMLtests = [ { input: "http://foo.example.com", shouldChange: true, }, { input: " foo", shouldChange: false, }, { input: "see http://abbr.example.com", shouldChange: true, }, { input: "", shouldChange: false, }, { input: "", shouldChange: false, }, { input: "", shouldChange: false, }, { input: "", shouldChange: false, }, { input: "", shouldChange: false, }, { input: "", shouldChange: false, }, { input: "http://head.example.com/", shouldChange: false, }, { input: "
see http://header.example.com
", shouldChange: true, }, { input: "