Warning, /firebird/packages/firebird-core/src/model/data-exchange.spec.ts is written in an unsupported language. File is not indexed.
0001 // data-exchange.spec.ts
0002
0003 import { DataExchange } from './data-exchange';
0004 import { Event } from './event';
0005 import { BoxHitPiece, BoxHitPieceFactory } from './box-hit.piece';
0006 import { _resetEventPieceRegistry, registerEventPieceFactory } from './event-piece';
0007
0008 describe('DataExchange with BoxHitPiece', () => {
0009 it('should serialize and deserialize correctly', () => {
0010 // Create a columnar piece: two hits, id == index
0011 const piece = new BoxHitPiece('TestPiece', 'TestOrigin');
0012 piece.count = 2;
0013 piece.pos = Float32Array.from([1, 2, 3, 4, 5, 6]);
0014 piece.dim = Float32Array.from([10, 10, 1, 10, 10, 2]);
0015 piece.time = Float32Array.from([4, 5]);
0016 piece.timeError = Float32Array.from([1, 1]);
0017 piece.edep = Float32Array.from([0.25, 0.5]);
0018 piece.edepError = Float32Array.from([0.125, 0.25]);
0019
0020 const entry = new Event();
0021 entry.id = 'event1';
0022 entry.pieces.push(piece);
0023
0024 const dataExchange = new DataExchange();
0025 dataExchange.origin = { fileName: 'sample.dat' };
0026 dataExchange.events.push(entry);
0027
0028 _resetEventPieceRegistry();
0029 registerEventPieceFactory(new BoxHitPieceFactory());
0030
0031 // Serialize
0032 const serialized = dataExchange.toDexObject();
0033 expect(serialized.type).toBe('firebird-dex-json');
0034 expect(serialized.version).toBe('1.0');
0035
0036 // Deserialize
0037 const deserialized = DataExchange.fromDexObj(serialized);
0038
0039 // Assertions
0040 expect(deserialized.version).toBe('1.0');
0041 expect(deserialized.origin).toEqual(dataExchange.origin);
0042 expect(deserialized.events.length).toBe(1);
0043
0044 const deserializedEntry = deserialized.events[0];
0045 expect(deserializedEntry.id).toBe(entry.id);
0046 expect(deserializedEntry.pieces.length).toBe(1);
0047
0048 const deserializedPiece = deserializedEntry.pieces[0] as BoxHitPiece;
0049 expect(deserializedPiece.name).toBe(piece.name);
0050 expect(deserializedPiece.type).toBe(piece.type);
0051 expect(deserializedPiece.origin).toBe(piece.origin);
0052 expect(deserializedPiece.count).toBe(2);
0053 expect(Array.from(deserializedPiece.pos)).toEqual(Array.from(piece.pos));
0054 expect(Array.from(deserializedPiece.dim)).toEqual(Array.from(piece.dim));
0055 expect(Array.from(deserializedPiece.time!)).toEqual(Array.from(piece.time!));
0056 expect(Array.from(deserializedPiece.edep!)).toEqual(Array.from(piece.edep!));
0057 });
0058
0059 it('rejects non-1.0 documents with a pointer to the upgrade command', () => {
0060 const old = { type: 'firebird-dex-json', version: '0.04', events: [] };
0061 expect(() => DataExchange.fromDexObj(old)).toThrow(/pyrobird upgrade/);
0062 expect(() => DataExchange.fromDexObj({ events: [] })).toThrow(/Unsupported DEX version/);
0063 });
0064 });