* fix: new Literal data structure update * fix: updated the LiteralValue dereferencing and added some type narrowing helpers * fix: updating formatting * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * fix: implementing a safer dereference method until we update createLiteraly() * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * why is this fallback here * fix: updating the type narrowing function * fix: restore this... see if snapshots trigger again * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * bump * bump * Add number with units formatting as KCL (#5195) * Add number with units formatting as KCL * Change type assertion helper to check what we need * Fix rectangle unit test * fix: adding a wait for execution to prevent clicking before lines are rendered --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { err } from 'lib/trap'
|
|
import { formatNumber, initPromise, parse, ParseResult } from './wasm'
|
|
import { enginelessExecutor } from 'lib/testHelpers'
|
|
import { Node } from 'wasm-lib/kcl/bindings/Node'
|
|
import { Program } from '../wasm-lib/kcl/bindings/Program'
|
|
|
|
beforeEach(async () => {
|
|
await initPromise
|
|
})
|
|
|
|
it('can execute parsed AST', async () => {
|
|
const code = `x = 1
|
|
// A comment.`
|
|
const result = parse(code)
|
|
expect(err(result)).toEqual(false)
|
|
const pResult = result as ParseResult
|
|
expect(pResult.errors.length).toEqual(0)
|
|
expect(pResult.program).not.toEqual(null)
|
|
const execState = await enginelessExecutor(pResult.program as Node<Program>)
|
|
expect(err(execState)).toEqual(false)
|
|
expect(execState.memory.get('x')?.value).toEqual(1)
|
|
})
|
|
|
|
it('formats numbers with units', () => {
|
|
expect(formatNumber(1, 'None')).toEqual('1')
|
|
expect(formatNumber(1, 'Count')).toEqual('1_')
|
|
expect(formatNumber(1, 'Mm')).toEqual('1mm')
|
|
expect(formatNumber(1, 'Inch')).toEqual('1in')
|
|
expect(formatNumber(0.5, 'Mm')).toEqual('0.5mm')
|
|
expect(formatNumber(-0.5, 'Mm')).toEqual('-0.5mm')
|
|
})
|