feat: minor fixes for spec v1.4 compliance

This commit is contained in:
Johann Schopplich
2025-11-05 19:04:00 +01:00
parent 1b87cfe58b
commit 840626dc90
10 changed files with 143 additions and 33 deletions

View File

@@ -5,13 +5,12 @@ import arraysObjects from '@toon-format/spec/tests/fixtures/encode/arrays-object
import arraysPrimitive from '@toon-format/spec/tests/fixtures/encode/arrays-primitive.json'
import arraysTabular from '@toon-format/spec/tests/fixtures/encode/arrays-tabular.json'
import delimiters from '@toon-format/spec/tests/fixtures/encode/delimiters.json'
import normalization from '@toon-format/spec/tests/fixtures/encode/normalization.json'
import objects from '@toon-format/spec/tests/fixtures/encode/objects.json'
import options from '@toon-format/spec/tests/fixtures/encode/options.json'
import primitives from '@toon-format/spec/tests/fixtures/encode/primitives.json'
import whitespace from '@toon-format/spec/tests/fixtures/encode/whitespace.json'
import { describe, expect, it } from 'vitest'
import { decode, DEFAULT_DELIMITER, encode } from '../src/index'
import { DEFAULT_DELIMITER, encode } from '../src/index'
const fixtureFiles = [
primitives,
@@ -21,22 +20,10 @@ const fixtureFiles = [
arraysNested,
arraysObjects,
delimiters,
normalization,
whitespace,
options,
] as Fixtures[]
// Special test for round-trip fidelity (not in JSON fixtures)
describe('round-trip fidelity', () => {
it('preserves precision for repeating decimals', () => {
const value = 1 / 3
const encodedValue = encode({ value })
const decodedValue = decode(encodedValue)
expect((decodedValue as Record<string, unknown>)?.value).toBe(value) // Round-trip fidelity
expect(encodedValue).toContain('0.3333333333333333') // Default JS precision
})
})
for (const fixtures of fixtureFiles) {
describe(fixtures.description, () => {
for (const test of fixtures.tests) {