Skip to content

Commit

Permalink
fix: trie-lib - fix issue with reference radix. (#3849)
Browse files Browse the repository at this point in the history
Fixes and issue with non-base 10 radixes.

The parser assumed that the reference index was in base 10.
  • Loading branch information
Jason3S committed Nov 17, 2022
1 parent d001316 commit 73af697
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
13 changes: 11 additions & 2 deletions packages/cspell-trie-lib/src/lib/io/importExportV4.test.ts
Expand Up @@ -4,8 +4,8 @@ import * as Trie from '..';
import { resolveSample as resolveSamplePath } from '../../test/samples';
import { consolidate } from '../consolidate';
import { TrieNode } from '../TrieNode';
import { importTrie, serializeTrie, __testing__ } from './importExportV4';
import * as v3 from './importExportV3';
import { importTrie, serializeTrie, __testing__ } from './importExportV4';

const sampleFile = resolveSamplePath('sampleV4.trie');

Expand Down Expand Up @@ -52,7 +52,16 @@ describe('Import/Export', () => {

test('tests serialize / deserialize trie', () => {
const trie = Trie.buildTrie(sampleWords).root;
const data = serializeTrie(trie, 10);
const data = serializeTrie(trie, 16);
const root = importTrie(data);
const words = [...Trie.iteratorTrieWords(root)];
expect(words).toEqual([...sampleWords].sort());
});

test('serialize / deserialize trie DAWG', () => {
const trie = Trie.buildTrie(sampleWords).root;
const trieDawg = consolidate(trie);
const data = serializeTrie(trieDawg, 16);
const root = importTrie(data);
const words = [...Trie.iteratorTrieWords(root)];
expect(words).toEqual([...sampleWords].sort());
Expand Down
5 changes: 4 additions & 1 deletion packages/cspell-trie-lib/src/lib/io/importExportV4.ts
Expand Up @@ -463,7 +463,10 @@ function parseStream(radix: number, iter: Iterable<string>): TrieRoot {
function parser(acc: ReduceResults, s: string): ReduceResults {
json = json + s;
if (s === REF_INDEX_END) {
refIndex = JSON.parse(json) as number[];
refIndex = json
.replace(/[\s[\]]/g, '')
.split(',')
.map((n) => parseInt(n, radix));
return { ...acc, parser: undefined };
}
return acc;
Expand Down

0 comments on commit 73af697

Please sign in to comment.