netwerk/test/unit/test_bug654926_test_seek.js

changeset 1
ca08bd8f51b2
equal deleted inserted replaced
-1:000000000000 0:7d4d9a2529bd
1 function gen_1MiB()
2 {
3 var i;
4 var data="x";
5 for (i=0 ; i < 20 ; i++)
6 data+=data;
7 return data;
8 }
9
10 function write_and_check(str, data, len)
11 {
12 var written = str.write(data, len);
13 if (written != len) {
14 do_throw("str.write has not written all data!\n" +
15 " Expected: " + len + "\n" +
16 " Actual: " + written + "\n");
17 }
18 }
19
20 function write_datafile(status, entry)
21 {
22 do_check_eq(status, Cr.NS_OK);
23 var os = entry.openOutputStream(0);
24 var data = gen_1MiB();
25
26 write_and_check(os, data, data.length);
27
28 os.close();
29 entry.close();
30
31 // try to open the entry for appending
32 asyncOpenCacheEntry("http://data/",
33 "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
34 open_for_readwrite);
35 }
36
37 function open_for_readwrite(status, entry)
38 {
39 do_check_eq(status, Cr.NS_OK);
40 var os = entry.openOutputStream(entry.dataSize);
41
42 // Opening the entry for appending data calls nsDiskCacheStreamIO::Seek()
43 // which initializes mFD. If no data is written then mBufDirty is false and
44 // mFD won't be closed in nsDiskCacheStreamIO::Flush().
45
46 os.close();
47 entry.close();
48
49 do_test_finished();
50 }
51
52 function run_test() {
53 do_get_profile();
54
55 // clear the cache
56 evict_cache_entries();
57
58 asyncOpenCacheEntry("http://data/",
59 "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
60 write_datafile);
61
62 do_test_pending();
63 }

mercurial