|
|
@@ -1,30 +1,7 @@
|
|
|
-import { DataFrameDTO, FieldType } from '../types';
|
|
|
-import { FieldCache, MutableDataFrame } from './dataFrameHelper';
|
|
|
+import { FieldCache } from './FieldCache';
|
|
|
+import { FieldType } from '../types/dataFrame';
|
|
|
import { toDataFrame } from './processDataFrame';
|
|
|
|
|
|
-describe('dataFrameHelper', () => {
|
|
|
- const frame = toDataFrame({
|
|
|
- fields: [
|
|
|
- { name: 'time', type: FieldType.time, values: [100, 200, 300] },
|
|
|
- { name: 'name', type: FieldType.string, values: ['a', 'b', 'c'] },
|
|
|
- { name: 'value', type: FieldType.number, values: [1, 2, 3] },
|
|
|
- { name: 'value', type: FieldType.number, values: [4, 5, 6] },
|
|
|
- ],
|
|
|
- });
|
|
|
- const ext = new FieldCache(frame);
|
|
|
-
|
|
|
- it('should get the first field with a duplicate name', () => {
|
|
|
- const field = ext.getFieldByName('value');
|
|
|
- expect(field!.name).toEqual('value');
|
|
|
- expect(field!.values.toJSON()).toEqual([1, 2, 3]);
|
|
|
- });
|
|
|
-
|
|
|
- it('should return index of the field', () => {
|
|
|
- const field = ext.getFirstFieldOfType(FieldType.number);
|
|
|
- expect(field!.index).toEqual(2);
|
|
|
- });
|
|
|
-});
|
|
|
-
|
|
|
describe('FieldCache', () => {
|
|
|
it('when creating a new FieldCache from fields should be able to query cache', () => {
|
|
|
const frame = toDataFrame({
|
|
|
@@ -90,68 +67,27 @@ describe('FieldCache', () => {
|
|
|
expect(fieldCache.getFieldByName('undefined')!.name).toEqual(expectedFieldNames[5]);
|
|
|
expect(fieldCache.getFieldByName('null')).toBeUndefined();
|
|
|
});
|
|
|
-});
|
|
|
-
|
|
|
-describe('reverse', () => {
|
|
|
- describe('when called with a DataFrame', () => {
|
|
|
- it('then it should reverse the order of values in all fields', () => {
|
|
|
- const frame: DataFrameDTO = {
|
|
|
- fields: [
|
|
|
- { name: 'time', type: FieldType.time, values: [100, 200, 300] },
|
|
|
- { name: 'name', type: FieldType.string, values: ['a', 'b', 'c'] },
|
|
|
- { name: 'value', type: FieldType.number, values: [1, 2, 3] },
|
|
|
- ],
|
|
|
- };
|
|
|
-
|
|
|
- const helper = new MutableDataFrame(frame);
|
|
|
-
|
|
|
- expect(helper.values.time.toArray()).toEqual([100, 200, 300]);
|
|
|
- expect(helper.values.name.toArray()).toEqual(['a', 'b', 'c']);
|
|
|
- expect(helper.values.value.toArray()).toEqual([1, 2, 3]);
|
|
|
-
|
|
|
- helper.reverse();
|
|
|
-
|
|
|
- expect(helper.values.time.toArray()).toEqual([300, 200, 100]);
|
|
|
- expect(helper.values.name.toArray()).toEqual(['c', 'b', 'a']);
|
|
|
- expect(helper.values.value.toArray()).toEqual([3, 2, 1]);
|
|
|
- });
|
|
|
- });
|
|
|
-});
|
|
|
|
|
|
-describe('Apending DataFrame', () => {
|
|
|
- it('Should append values', () => {
|
|
|
- const dto: DataFrameDTO = {
|
|
|
+ describe('field retrieval', () => {
|
|
|
+ const frame = toDataFrame({
|
|
|
fields: [
|
|
|
- { name: 'time', type: FieldType.time, values: [100] },
|
|
|
- { name: 'name', type: FieldType.string, values: ['a', 'b'] },
|
|
|
+ { name: 'time', type: FieldType.time, values: [100, 200, 300] },
|
|
|
+ { name: 'name', type: FieldType.string, values: ['a', 'b', 'c'] },
|
|
|
{ name: 'value', type: FieldType.number, values: [1, 2, 3] },
|
|
|
+ { name: 'value', type: FieldType.number, values: [4, 5, 6] },
|
|
|
],
|
|
|
- };
|
|
|
-
|
|
|
- const frame = new MutableDataFrame(dto);
|
|
|
- expect(frame.values.time.toArray()).toEqual([100, null, null]);
|
|
|
-
|
|
|
- // Set a value on the second row
|
|
|
- frame.set(1, { time: 200, name: 'BB', value: 20 });
|
|
|
- expect(frame.toArray()).toEqual([
|
|
|
- { time: 100, name: 'a', value: 1 }, // 1
|
|
|
- { time: 200, name: 'BB', value: 20 }, // 2
|
|
|
- { time: null, name: null, value: 3 }, // 3
|
|
|
- ]);
|
|
|
+ });
|
|
|
+ const ext = new FieldCache(frame);
|
|
|
|
|
|
- // Set a value on the second row
|
|
|
- frame.add({ value2: 'XXX' }, true);
|
|
|
- expect(frame.toArray()).toEqual([
|
|
|
- { time: 100, name: 'a', value: 1, value2: null }, // 1
|
|
|
- { time: 200, name: 'BB', value: 20, value2: null }, // 2
|
|
|
- { time: null, name: null, value: 3, value2: null }, // 3
|
|
|
- { time: null, name: null, value: null, value2: 'XXX' }, // 4
|
|
|
- ]);
|
|
|
+ it('should get the first field with a duplicate name', () => {
|
|
|
+ const field = ext.getFieldByName('value');
|
|
|
+ expect(field!.name).toEqual('value');
|
|
|
+ expect(field!.values.toJSON()).toEqual([1, 2, 3]);
|
|
|
+ });
|
|
|
|
|
|
- // Make sure length survives a spread operator
|
|
|
- const keys = Object.keys(frame);
|
|
|
- const copy = { ...frame } as any;
|
|
|
- expect(keys).toContain('length');
|
|
|
- expect(copy.length).toEqual(frame.length);
|
|
|
+ it('should return index of the field', () => {
|
|
|
+ const field = ext.getFirstFieldOfType(FieldType.number);
|
|
|
+ expect(field!.index).toEqual(2);
|
|
|
+ });
|
|
|
});
|
|
|
});
|