diff --git a/src/reader/spec/gro.spec.ts b/src/reader/spec/gro.spec.ts index d93348d846852cc3e20415ed52209a5d8887adc9..5d276eaf1a5b4c9af56fae4f1f8f1baae3a3c3ec 100644 --- a/src/reader/spec/gro.spec.ts +++ b/src/reader/spec/gro.spec.ts @@ -12,6 +12,13 @@ const groString = `MD of 2 waters, t= 4.2 2WATER HW3 6 1.326 0.120 0.568 1.9427 -0.8216 -0.0244 1.82060 1.82060 1.82060` +const groStringHighPrecision = `Generated by trjconv : 2168 system t= 15.00000 + 3 + 1ETH C1 1 2.735383 2.672010 1.450194 0.2345 -0.1622 0.2097 + 1ETH H11 2 0.015804 2.716597 1.460588 0.8528 -0.7984 0.6605 + 1ETH H12 3 2.744822 2.565544 1.409227 -2.3812 2.8618 1.8101 + 1.82060 1.82060 1.82060` + describe('gro reader', () => { it('basic', () => { const parsed = parse(groString) @@ -37,4 +44,29 @@ describe('gro reader', () => { } } }) + + it('high precision', () => { + const parsed = parse(groStringHighPrecision) + + if (parsed.isError) { + console.log(parsed) + } else { + const groFile = parsed.result + + const header = groFile.blocks[0].getTable('header') + if (header) { + expect(header.columnNames).toEqual(['title', 'timeInPs', 'numberOfAtoms', 'boxX', 'boxY', 'boxZ']) + + expect(header.getColumn('title').getString(0)).toBe('Generated by trjconv : 2168 system') + expect(header.getColumn('timeInPs').getFloat(0)).toBeCloseTo(15) + expect(header.getColumn('numberOfAtoms').getInteger(0)).toBe(3) + + expect(header.getColumn('boxX').getFloat(0)).toBeCloseTo(1.82060) + expect(header.getColumn('boxY').getFloat(0)).toBeCloseTo(1.82060) + expect(header.getColumn('boxZ').getFloat(0)).toBeCloseTo(1.82060) + } else { + console.error('no header') + } + } + }) });