Back to home page

EIC code displayed by LXR

 
 

    


Warning, /firebird/packages/firebird-core/src/data-catalog.spec.ts is written in an unsupported language. File is not indexed.

0001 import { describe, expect, it } from 'vitest';
0002 import {
0003   DataCatalogEntry,
0004   catalogEventSources,
0005   catalogGeometrySources,
0006   facetValues,
0007   matchEntries,
0008   mergeDataCatalogs,
0009 } from './data-catalog';
0010 
0011 const entries: DataCatalogEntry[] = [
0012   { name: 'nc 10x100', geometry: 'g/full.root', events: 'd/nc_10x100.zip', tags: { process: 'dis-nc', beam: '10x100' } },
0013   { name: 'cc 10x100', geometry: 'g/full.root', events: 'd/cc_10x100.zip', tags: { process: 'dis-cc', beam: '10x100' } },
0014   { name: 'nc 18x275', geometry: 'g/tracking.root', events: 'd/nc_18x275.zip', tags: { process: 'dis-nc', beam: '18x275' } },
0015   { name: 'geometry only', geometry: 'g/full.root' },
0016 ];
0017 
0018 describe('data catalog helpers', () => {
0019   it('matches entries on every selected tag; empty selection matches all', () => {
0020     expect(matchEntries(entries, {}).length).toBe(4);
0021     expect(matchEntries(entries, { process: 'dis-nc' }).map(e => e.name)).toEqual(['nc 10x100', 'nc 18x275']);
0022     expect(matchEntries(entries, { process: 'dis-nc', beam: '10x100' }).map(e => e.name)).toEqual(['nc 10x100']);
0023     expect(matchEntries(entries, { process: 'dis-cc', beam: '18x275' })).toEqual([]);
0024   });
0025 
0026   it('lists facet values in declared order first, then first-seen', () => {
0027     const facet = { key: 'beam', label: 'Beam', values: { '18x275': { label: '18 x 275' }, '5x41': {} } };
0028     // 5x41 is declared but unused, so it is not offered
0029     expect(facetValues(entries, facet)).toEqual(['18x275', '10x100']);
0030     expect(facetValues(entries, { key: 'process', label: 'Process' })).toEqual(['dis-nc', 'dis-cc']);
0031   });
0032 
0033   it('merges catalogs and their facet value maps', () => {
0034     const merged = mergeDataCatalogs([
0035       { entries: entries.slice(0, 1), facets: [{ key: 'beam', label: 'Beam', values: { '10x100': { label: 'a' } } }] },
0036       null,
0037       { entries: entries.slice(1), facets: [{ key: 'beam', label: 'Beam energy', values: { '18x275': {} } }], geometrySources: ['g/extra.root'] },
0038     ]);
0039     expect(merged.entries?.length).toBe(4);
0040     expect(merged.facets).toEqual([{ key: 'beam', label: 'Beam energy', values: { '10x100': { label: 'a' }, '18x275': {} } }]);
0041     expect(catalogGeometrySources(merged)).toEqual(['g/full.root', 'g/tracking.root', 'g/extra.root']);
0042     expect(catalogEventSources(merged)).toEqual(['d/nc_10x100.zip', 'd/cc_10x100.zip', 'd/nc_18x275.zip']);
0043   });
0044 });