molstar
Version:
A comprehensive macromolecular library.
115 lines • 5.09 kB
JavaScript
/**
* Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import * as ColumnHelpers from '../column-helpers';
import { Column } from '../column';
import { Table } from '../table';
describe('column', function () {
var cc = Column.ofConst(10, 2, Column.Schema.int);
var arr = Column.ofArray({ array: [1, 2, 3, 4], schema: Column.Schema.int });
var arrNumberList = Column.ofArray({ array: [[1, 2], [3, 4], [5, 6]], schema: Column.Schema.List(' ', function (x) { return parseInt(x, 10); }) });
var arrStringList = Column.ofArray({ array: [['a', 'b'], ['c', 'd'], ['e', 'f']], schema: Column.Schema.List(',', function (x) { return x; }) });
var arrWindow = Column.window(arr, 1, 3);
var typed = Column.ofArray({ array: new Int32Array([1, 2, 3, 4]), schema: Column.Schema.int });
var typedWindow = Column.window(typed, 1, 3);
var numStr = Column.ofArray({ array: [1, 2], schema: Column.Schema.str });
it('constant', function () {
expect(cc.rowCount).toBe(2);
expect(cc.value(0)).toBe(10);
});
it('arr', function () {
expect(arr.rowCount).toBe(4);
expect(arr.value(1)).toBe(2);
expect(arrWindow.value(0)).toBe(2);
expect(arrWindow.rowCount).toBe(2);
});
it('arrList', function () {
expect(arrNumberList.rowCount).toBe(3);
expect(arrNumberList.value(1)).toEqual([3, 4]);
expect(arrStringList.rowCount).toBe(3);
expect(arrStringList.value(2)).toEqual(['e', 'f']);
});
it('typed', function () {
expect(typedWindow.value(0)).toBe(2);
expect(typedWindow.rowCount).toBe(2);
expect(ColumnHelpers.isTypedArray(typedWindow.toArray())).toBe(true);
});
it('numStr', function () {
expect(numStr.value(0)).toBe('1');
expect(numStr.toArray()).toEqual(['1', '2']);
});
it('view', function () {
expect(Column.view(arr, [1, 0, 3, 2]).toArray()).toEqual([2, 1, 4, 3]);
expect(Column.view(arr, [1, 3]).toArray()).toEqual([2, 4]);
});
it('map to array', function () {
expect(Column.mapToArray(arrWindow, function (x) { return x + 1; })).toEqual([3, 4]);
});
});
describe('table', function () {
var schema = {
x: Column.Schema.int,
n: Column.Schema.str
};
it('ofRows', function () {
var t = Table.ofRows(schema, [
{ x: 10, n: 'row1' },
{ x: -1, n: 'row2' },
]);
expect(t.x.toArray()).toEqual([10, -1]);
expect(t.n.toArray()).toEqual(['row1', 'row2']);
});
it('ofColumns', function () {
var t = Table.ofColumns(schema, {
x: Column.ofArray({ array: [10, -1], schema: Column.Schema.int }),
n: Column.ofArray({ array: ['row1', 'row2'], schema: Column.Schema.str }),
});
expect(t.x.toArray()).toEqual([10, -1]);
expect(t.n.toArray()).toEqual(['row1', 'row2']);
});
it('ofArrays', function () {
var t = Table.ofArrays(schema, {
x: [10, -1],
n: ['row1', 'row2'],
});
expect(t.x.toArray()).toEqual([10, -1]);
expect(t.n.toArray()).toEqual(['row1', 'row2']);
});
it('pickColumns', function () {
var t = Table.ofColumns(schema, {
x: Column.ofArray({ array: [10, -1], schema: Column.Schema.int }),
n: Column.ofArray({ array: ['row1', 'row2'], schema: Column.Schema.str }),
});
var s = { x: Column.Schema.int, y: Column.Schema.int };
var picked = Table.pickColumns(s, t, { y: Column.ofArray({ array: [3, 4], schema: Column.Schema.int }) });
expect(picked._columns).toEqual(['x', 'y']);
expect(picked._rowCount).toEqual(2);
expect(picked.x.toArray()).toEqual([10, -1]);
expect(picked.y.toArray()).toEqual([3, 4]);
});
it('view', function () {
var t = Table.ofColumns(schema, {
x: Column.ofArray({ array: [10, -1], schema: Column.Schema.int }),
n: Column.ofArray({ array: ['row1', 'row2'], schema: Column.Schema.str }),
});
var s = { x: Column.Schema.int };
var view = Table.view(t, s, [1]);
expect(view._columns).toEqual(['x']);
expect(view._rowCount).toEqual(1);
expect(view.x.toArray()).toEqual([-1]);
});
it('sort', function () {
var t = Table.ofColumns(schema, {
x: Column.ofArray({ array: [10, -1], schema: Column.Schema.int }),
n: Column.ofArray({ array: ['row1', 'row2'], schema: Column.Schema.str }),
});
var x = t.x;
var sorted = Table.sort(t, function (i, j) { return x.value(i) - x.value(j); });
expect(sorted.x.toArray()).toEqual([-1, 10]);
expect(sorted.n.toArray()).toEqual(['row2', 'row1']);
});
});
//# sourceMappingURL=table.spec.js.map