qminer
Version:
A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data
111 lines (97 loc) • 4.22 kB
JavaScript
/**
* Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
* All rights reserved.
*
* This source code is licensed under the FreeBSD license found in the
* LICENSE file in the root directory of this source tree.
*/
// console.log(__filename)
var assert = require('assert');
var qm = require('../../index.js');
var verbose = false;
describe('Record Tests', function () {
it('should pass', function () {
var base = new qm.Base({ mode: 'createClean' });
if (verbose) {
console.log("Record", "Testing record serialization/deserilization/by value");
}
// only report failours
//assert.silent = !process.isArg("-verbose");
// name of the debug process
//assert.consoleTitle = "Record";
base.createStore({
"name": "RecordTest",
"fields": [
{ "name": "Int", "type": "int" },
{ "name": "IntV", "type": "int_v", "null": true },
{ "name": "UInt64", "type": "uint64", "null": true },
{ "name": "Str", "type": "string", "null": true },
{ "name": "StrV", "type": "string_v", "null": true },
{ "name": "Bool", "type": "bool", "null": true },
{ "name": "Flt", "type": "float", "null": true },
{ "name": "FltPr", "type": "float_pair", "null": true },
{ "name": "FltV", "type": "float_v", "null": true },
{ "name": "Tm", "type": "datetime", "null": true },
{ "name": "SpV", "type": "num_sp_v", "null": true }
],
"joins": [],
"keys": []
});
assert(base.store("RecordTest") != null, "Retrieve 'RecordTest' store");
var RecordTest = base.store("RecordTest");
// adding record
var rec = {
Int: 123,
UInt64: 123,
Str: "test",
StrV: ["test1", "test2"],
Bool: false,
Flt: 1.23,
Tm: 1433116800000
};
// check addition
assert.strictEqual(RecordTest.push(rec), 0, "RecordTest.add");
// check getters
var recByRef = RecordTest[0];
assert(recByRef != null, "RecordTest[0]");
assert.strictEqual(recByRef.Int, 123, "recByRef.Int");
assert.strictEqual(recByRef.UInt64, 123, "recByRef.UInt64");
assert.strictEqual(recByRef.Str, "test", "recByRef.Str");
assert.strictEqual(recByRef.Bool, false, "recByRef.Bool");
assert.strictEqual(recByRef.Flt, 1.23, "recByRef.Flt");
assert.strictEqual(recByRef.Tm.getTime(), 1433116800000, "recByRef.Tm");
//recByRef
// check setters
recByRef.Int = 124;
assert.strictEqual(recByRef.Int, 124, "recByRef.Int");
recByRef.UInt64 = 124;
assert.strictEqual(recByRef.UInt64, 124, "recByRef.UInt64");
recByRef.Str = "tset";
assert.strictEqual(recByRef.Str, "tset", "recByRef.Str");
recByRef.Bool = true;
assert.strictEqual(recByRef.Bool, true, "recByRef.Bool");
recByRef.Flt = 1.24;
assert.strictEqual(recByRef.Flt, 1.24, "recByRef.Flt");
recByRef.Tm = "2015-06-01T00:00:00Z";
assert.strictEqual(recByRef.Tm.getTime(), 1433116800000, "recByRef.Tm");
recByRef.Tm = 1433116800000 + 5 * 60 * 1000; // +5 min
assert.strictEqual(recByRef.Tm.getTime(), 1433116800000 + 5 * 60 * 1000, "recByRef.Tm");
// check by value
var recByVal = RecordTest.newRecord(rec);
assert(recByVal != null, "RecordTest.newRec(rec)");
assert.strictEqual(recByVal.Int, 123, "recByVal.Int");
assert.strictEqual(recByVal.UInt64, 123, "recByVal.UInt64");
assert.strictEqual(recByVal.Str, "test", "recByVal.Str");
assert(recByVal.StrV != null, "recByVal.StrV");
if (verbose) {
console.log("Record", JSON.stringify(recByVal.StrV));
}
assert.strictEqual(recByVal.Bool, false, "recByVal.Bool");
assert.strictEqual(recByVal.Flt, 1.23, "recByVal.Flt");
if (verbose) {
console.log("Rec test end");
}
base.close();
//})});
})
});