import { describe, expect, it } from 'vitest'; import { GAME_CREATION_RESOURCE_LAYOUT_MAX_SAFE_REVISION, isSafeProjectResourceCanvasLayoutRevision, } from '../../../packages/shared/src/contracts/gameCreationApp'; describe('resource canvas layout contract', () => { it('keeps revisions inside the JSON safe integer range', () => { const maxRevision = GAME_CREATION_RESOURCE_LAYOUT_MAX_SAFE_REVISION; expect(JSON.parse(JSON.stringify({ revision: maxRevision }))).toEqual({ revision: maxRevision, }); expect(isSafeProjectResourceCanvasLayoutRevision(0)).toBe(true); expect(isSafeProjectResourceCanvasLayoutRevision(maxRevision)).toBe(true); expect(isSafeProjectResourceCanvasLayoutRevision(maxRevision + 1)).toBe( false, ); expect(isSafeProjectResourceCanvasLayoutRevision(-1)).toBe(false); expect(isSafeProjectResourceCanvasLayoutRevision(1.5)).toBe(false); expect(isSafeProjectResourceCanvasLayoutRevision(Number.NaN)).toBe(false); expect( isSafeProjectResourceCanvasLayoutRevision(Number.POSITIVE_INFINITY), ).toBe(false); expect(isSafeProjectResourceCanvasLayoutRevision('1')).toBe(false); }); });