it('Marisa::Agent::key', function () { var agent = new Marisa.Agent(); should(agent.key).be.a.Function(); var key = agent.key(); should(key).be.an.instanceof(Marisa.Key); should(key.weight()).equal(0); should(key.id()).equal(0); should(key.length()).equal(0); should(key.ptr()).equal(''); should(function () { agent.key.call({}); }).throw(); });
it('Marisa::Agent::set_query', function () { var agent = new Marisa.Agent(); should(agent.set_query).be.a.Function(); should(agent.set_query(0)).be.undefined(); should(agent.set_query(unicode)).be.undefined(); should(agent.set_query(unicode, 3)).be.undefined(); should(function () { agent.set_query(); }).throw(); should(function () { agent.set_query({}); }).throw(); should(function () { agent.set_query(unicode, {}); }).throw(); should(function () { agent.set_query.call({}); }).throw(); });
it('Marisa::Agent::query', function () { var agent = new Marisa.Agent(); should(agent.query).be.a.Function(); var query = agent.query(); should(query).be.an.instanceof(Marisa.Query); should(query.ptr()).equal(''); should(query.length()).equal(0); should(query.id()).equal(0); var len = 7; agent.set_query(unicode, len); var query = agent.query(); should(query.id()).equal(0); should(query.length()).equal(Buffer(unicode).slice(0, len).length); should(query.ptr()).equal(Buffer(unicode).slice(0, len).toString()); for (var i = 0, l = query.length(), b = Buffer(unicode); i < l; i++) { should(query[i]).be.a.Number(); should(query[i]).equal(b[i]); } var agent = new Marisa.Agent(); agent.set_query(2); var query = agent.query(); should(query.id()).equal(2); should(query.length()).equal(0); should(query.ptr()).equal(''); should(function () { agent.query.call({}); }).throw(); });
var testLookup = function (trie, keyset, skip) { var agent = new Marisa.Agent(); for (var i = 0, l = keyset.size(); i < l; i++) { var key = keyset[i]; agent.set_query(key.ptr()); should(trie.lookup(agent)).be.true(); should(agent.key().weight()).equal(uint2float(key.id())); should(agent.key().id()).equal(key.id()); should(agent.key().length()).equal(key.length()); should(agent.key().length()).equal(Buffer.byteLength(agent.key().ptr())); should(agent.key().ptr()).equal(key.ptr()); } };
var testCommonPrefixSearch = function (trie, keyset, skip) { var agent = new Marisa.Agent(); for (var i = 0, l = keyset.size(); i < l; i++) { var key = keyset[i]; agent.set_query(key.ptr()); var found = false; while (found = trie.common_prefix_search(agent)) { should(found).be.true(); should(key.ptr().indexOf(agent.key().ptr())).equal(0); should(agent.key().weight()).equal(uint2float(agent.key().id())); should(agent.key().id() <= key.id()).be.true(); should(agent.key().length() <= key.length()).be.true(); should(agent.key().length()).equal(Buffer.byteLength(agent.key().ptr())); } should(found).be.false(); should(agent.key().id()).equal(key.id()); } };
var testReverseLookup = function (trie, keyset, skip) { var agent = new Marisa.Agent(); for (var i = 0, l = keyset.size(); i < l; i++) { var key = keyset[i]; agent.set_query(key.id()); if (!skip) { should(function () { should(trie.reverse_lookup(agent)).be.undefined(); }).not.throw(); } else { should(trie.reverse_lookup(agent)).be.undefined(); } should(agent.key().weight()).equal(uint2float(key.id())); should(agent.key().id()).equal(key.id()); should(agent.key().length()).equal(key.length()); should(agent.key().length()).equal(Buffer.byteLength(agent.key().ptr())); should(agent.key().ptr()).equal(key.ptr()); } };
it('Marisa::Agent::clear', function () { var agent = new Marisa.Agent(); should(agent.clear).be.a.Function(); agent.set_query(unicode); should(agent.clear()).be.undefined(); var query = agent.query(); should(query.id()).equal(0); should(query.length()).equal(0); should(query.ptr()).equal(''); var agent = new Marisa.Agent(); agent.set_query(2); should(agent.clear()).be.undefined(); var key = agent.key(); should(key.weight()).equal(0); should(key.id()).equal(0); should(key.length()).equal(0); should(key.ptr()).equal(''); should(function () { agent.clear.call({}); }).throw(); });
should(function () { agent.swap({}); }).throw();
should(function () { agent.set_query(unicode, {}); }).throw();
should(function () { agent.set_query({}); }).throw();
agent.ready(() => { agent.removeListener('error', startErrorHandler); process.send({ action: 'agent-start', to: 'master' }); });