108 lines
2.7 KiB
TypeScript

import { seedTokens, rewireSource, rewireSpecs } from '../../src/util.js';
test('source to spec', () => {
const block = {
description: '',
tags: [
{
tag: 'my-tag',
name: '',
type: '',
optional: false,
description: '',
problems: [],
source: [
{
number: 2,
source: '...changed in spec...',
tokens: seedTokens({ name: '...changed in spec...' }),
},
],
},
],
source: [
{
number: 1,
source: 'source line 1',
tokens: seedTokens(),
},
{
number: 2,
source: 'source line 2',
tokens: seedTokens({ name: 'source' }),
},
],
problems: [],
};
// source is unsynced
expect(block.source[1] === block.tags[0].source[0]).toBe(false);
rewireSource(block);
// source is referenced
expect(block.source[1] === block.tags[0].source[0]).toBe(true);
// non-tag line stays unchanged
expect(block.source[0].source).toEqual('source line 1');
// tag-holding source line stays unchanged
expect(block.source[1].source).toEqual('source line 2');
expect(block.source[1].tokens.name).toEqual('source');
// tag source inherits block source
expect(block.tags[0].source[0].source).toEqual('source line 2');
expect(block.tags[0].source[0].tokens.name).toEqual('source');
});
test('spec to source', () => {
const block = {
description: '',
tags: [
{
tag: 'my-tag',
name: '',
type: '',
optional: false,
description: '',
problems: [],
source: [
{
number: 2,
source: '...changed in spec...',
tokens: seedTokens({ name: '...changed in spec...' }),
},
],
},
],
source: [
{
number: 1,
source: 'source line 1',
tokens: seedTokens(),
},
{
number: 2,
source: 'source line 2',
tokens: seedTokens({ name: 'source' }),
},
],
problems: [],
};
// source is unsynced
expect(block.source[1] === block.tags[0].source[0]).toBe(false);
rewireSpecs(block);
// source is referenced
expect(block.source[1] === block.tags[0].source[0]).toBe(true);
// non-tag line stays unchanged
expect(block.source[0].source).toEqual('source line 1');
// tag-holding source line inherits spec source
expect(block.source[1].source).toEqual('...changed in spec...');
expect(block.source[1].tokens.name).toEqual('...changed in spec...');
// tag source inherits block source
expect(block.tags[0].source[0].source).toEqual('...changed in spec...');
expect(block.tags[0].source[0].tokens.name).toEqual('...changed in spec...');
});