assert 'Fossil' === typename Fossil;
assert 'Db' === typename Fossil.Db;
assert 'Stmt' === typename Fossil.Db.Stmt;
assert 'Context' === typename Fossil.Context;
scope {
var f = Fossil.Context.new({traceSql:false});
//print('f =',f);
assert 'Context' === typename f;
assert f inherits Fossil.Context;
assert !f.db;
assert f === f.openCheckout();
assert f.db inherits Fossil.Db;
assert f.db.repo inherits Fossil.Db;
assert f.db.checkout inherits Fossil.Db;
var counter = 0;
assert f.db === f.db.each({
sql:<<<_SQL
SELECT mtime FROM event LIMIT 2
_SQL,
callback:'++counter'
});
assert 2 === counter;
unset counter;
/* These UUIDs are only valid for the libfossil tree... */
assert '99237c3636730f20ed07b227c5092c087aea8b0c' === f.symToUuid('rid:1');
assert 1 === f.symToRid('99237c3636730f20');
const trunkUuid = f.symToUuid('trunk');
assert (var b = f.loadBlob('trunk')) inherits s2.Buffer;
assert !b.isCompressed();
assert b.length() > 0;
assert b.sha1() === trunkUuid;
//const trunkZCard = b.toString(b.length()-33, 32);
//print(b,trunkZCard);
b = f.artifactDiff('prev', trunkUuid, {
// all available options (not all combinations make sense and some trump others):
html: false,
text: true,
inline: false,
sbsWidth: 60,
contextLines: 5,
invert: false
});
assert b inherits s2.Buffer;
assert b.length() > 10;
assert !b.isCompressed();
unset b;
assert 'object' === typename (var d = f.loadManifest('trunk'));
assert d.uuid === trunkUuid;
assert d.D > 1.0;
assert 'array' === typename d.F;
assert 40 === d.P.0.length();
//assert d.Z === trunkZCard; // doh: fsl_deck does not expose the Z-card b/c it's only internally generated/used.
//print(d);
if(0){
f.finalize();
assert !f.db;
}else{
assert f === f.close();
assert !f.db;
assert undefined === f.finalize() /* explicitly frees all C-level resources (or leave it to GC) */;
}
assert 0 === catch{f.openCheckout()}.message.indexOf("'this'") /* native was disconnected in finalize() */;
//print(__FLC,"scope done");
}
//print(__FLC,"done");