test_bug396389.js (1440B)
1 "use strict"; 2 3 function round_trip(uri) { 4 var objectOutStream = Cc["@mozilla.org/binaryoutputstream;1"].createInstance( 5 Ci.nsIObjectOutputStream 6 ); 7 var pipe = Cc["@mozilla.org/pipe;1"].createInstance(Ci.nsIPipe); 8 pipe.init(false, false, 0, 0xffffffff, null); 9 objectOutStream.setOutputStream(pipe.outputStream); 10 objectOutStream.writeCompoundObject(uri, Ci.nsISupports, true); 11 objectOutStream.close(); 12 13 var objectInStream = Cc["@mozilla.org/binaryinputstream;1"].createInstance( 14 Ci.nsIObjectInputStream 15 ); 16 objectInStream.setInputStream(pipe.inputStream); 17 return objectInStream.readObject(true).QueryInterface(Ci.nsIURI); 18 } 19 20 function run_test() { 21 var uri1 = Services.io.newURI("file:///"); 22 Assert.ok(uri1 instanceof Ci.nsIFileURL); 23 24 var uri2 = uri1.mutate().finalize(); 25 Assert.ok(uri2 instanceof Ci.nsIFileURL); 26 Assert.ok(uri1.equals(uri2)); 27 28 var uri3 = round_trip(uri1); 29 Assert.ok(uri3 instanceof Ci.nsIFileURL); 30 Assert.ok(uri1.equals(uri3)); 31 32 // URI stolen from 33 // http://lists.w3.org/Archives/Public/public-iri/2004Mar/0012.html 34 var uri4 = Services.io.newURI("http://xn--jos-dma.example.net.ch/"); 35 Assert.equal(uri4.asciiHost, "xn--jos-dma.example.net.ch"); 36 Assert.equal(uri4.displayHost, "jos\u00e9.example.net.ch"); 37 38 var uri5 = round_trip(uri4); 39 Assert.ok(uri4.equals(uri5)); 40 Assert.equal(uri4.displayHost, uri5.displayHost); 41 Assert.equal(uri4.asciiHost, uri5.asciiHost); 42 }