54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { describe } from 'bun:test'
|
|
import { expect, test } from 'bun:test'
|
|
import { Shrimp } from '..'
|
|
|
|
describe('Shrimp', () => {
|
|
test('allows running Shrimp code', async () => {
|
|
const shrimp = new Shrimp()
|
|
expect(await shrimp.run(`1 + 5`)).toEqual(6)
|
|
expect(await shrimp.run(`type 5`)).toEqual('number')
|
|
})
|
|
|
|
test('maintains state across runs', async () => {
|
|
const shrimp = new Shrimp()
|
|
|
|
await shrimp.run(`abc = true`)
|
|
expect(shrimp.get('abc')).toEqual(true)
|
|
|
|
await shrimp.run(`name = Bob`)
|
|
expect(shrimp.get('abc')).toEqual(true)
|
|
expect(shrimp.get('name')).toEqual('Bob')
|
|
|
|
await shrimp.run(`abc = false`)
|
|
expect(shrimp.get('abc')).toEqual(false)
|
|
})
|
|
|
|
test('allows setting your own globals', async () => {
|
|
const shrimp = new Shrimp({ hiya: () => 'hey there' })
|
|
|
|
await shrimp.run('abc = hiya')
|
|
expect(shrimp.get('abc')).toEqual('hey there')
|
|
expect(await shrimp.run('type abc')).toEqual('string')
|
|
|
|
// still there
|
|
expect(await shrimp.run('hiya')).toEqual('hey there')
|
|
})
|
|
|
|
test('allows setting your own locals', async () => {
|
|
const shrimp = new Shrimp({ 'my-global': () => 'hey there' })
|
|
|
|
await shrimp.run('abc = my-global')
|
|
expect(shrimp.get('abc')).toEqual('hey there')
|
|
|
|
await shrimp.run('abc = my-global', { 'my-global': 'now a local' })
|
|
expect(shrimp.get('abc')).toEqual('now a local')
|
|
|
|
await shrimp.run('abc = nothing')
|
|
expect(shrimp.get('abc')).toEqual('nothing')
|
|
await shrimp.run('abc = nothing', { nothing: 'something' })
|
|
expect(shrimp.get('abc')).toEqual('something')
|
|
await shrimp.run('abc = nothing')
|
|
expect(shrimp.get('abc')).toEqual('nothing')
|
|
})
|
|
})
|