Login
Artifact [589d590f9c]
Login

Artifact 589d590f9c4916d7449c29877cd6be2af6db4caa:


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");