blob: 891bb75c6165cca96e654e96cc13df14d95113fb [file] [log] [blame]
import { assert } from 'chai';
import { getTraceColor, convertFromDataframe } from './plot-builder';
import { TraceSet, ColumnHeader, Trace } from '../json';
import { MISSING_DATA_SENTINEL } from '../const/const';
describe('plot-builder', () => {
describe('getTraceColor', () => {
it('returns consistent color for same string', () => {
assert.equal(getTraceColor('foo'), getTraceColor('foo'));
});
it('returns different colors for different strings', () => {
assert.notEqual(getTraceColor('foo'), getTraceColor('bar'));
});
});
describe('convertFromDataframe', () => {
it('returns null for empty header', () => {
assert.isNull(convertFromDataframe({ traceset: TraceSet({}), header: [] }));
});
it('converts dataframe correctly', () => {
const traceset: TraceSet = TraceSet({
trace1: Trace([1, 2]),
trace2: Trace([3, MISSING_DATA_SENTINEL]),
});
const header: ColumnHeader[] = [
{ offset: 100, timestamp: 1000 },
{ offset: 101, timestamp: 2000 },
] as any;
const result = convertFromDataframe({ traceset, header }, 'commit');
assert.isNotNull(result);
// Row 0: Header
// Row 1: Data point 1
// Row 2: Data point 2
assert.equal(result!.length, 3);
// Header check
// [ {role: domain...}, 'trace1', 'trace2' ]
assert.equal(result![0][1], 'trace1');
assert.equal(result![0][2], 'trace2');
// Data check
// Row 1: [100, 1, 3]
assert.equal(result![1][0], 100);
assert.equal(result![1][1], 1);
assert.equal(result![1][2], 3);
// Row 2: [101, 2, null] (missing data sentinel -> null)
assert.equal(result![2][0], 101);
assert.equal(result![2][1], 2);
assert.isNull(result![2][2]);
});
});
});