Something went wrong. Try again.
Offload functions to worker threads with shared memory primitives for Node.js.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485import { describe, it } from 'node:test';import assert from 'node:assert/strict';import { uint8atomic } from 'moroutine';
describe('Uint8Atomic', () => { it('self-allocates and initializes to zero', () => { const a = uint8atomic(); assert.equal(a.load(), 0); });
it('stores and loads a value', () => { const a = uint8atomic(); a.store(200); assert.equal(a.load(), 200); });
it('exposes byteSize of 1', () => { assert.equal(uint8atomic.byteSize, 1); });
it('add returns previous value and updates', () => { const a = uint8atomic(); a.store(10); const prev = a.add(5); assert.equal(prev, 10); assert.equal(a.load(), 15); });
it('sub returns previous value and updates', () => { const a = uint8atomic(); a.store(10); const prev = a.sub(3); assert.equal(prev, 10); assert.equal(a.load(), 7); });
it('and returns previous value and updates', () => { const a = uint8atomic(); a.store(0b1100); const prev = a.and(0b1010); assert.equal(prev, 0b1100); assert.equal(a.load(), 0b1000); });
it('or returns previous value and updates', () => { const a = uint8atomic(); a.store(0b1100); const prev = a.or(0b0011); assert.equal(prev, 0b1100); assert.equal(a.load(), 0b1111); });
it('xor returns previous value and updates', () => { const a = uint8atomic(); a.store(0b1100); const prev = a.xor(0b1010); assert.equal(prev, 0b1100); assert.equal(a.load(), 0b0110); });
it('exchange returns previous value and sets new', () => { const a = uint8atomic(); a.store(200); const prev = a.exchange(100); assert.equal(prev, 200); assert.equal(a.load(), 100); });
it('compareExchange succeeds when expected matches', () => { const a = uint8atomic(); a.store(200); const actual = a.compareExchange(200, 100); assert.equal(actual, 200); assert.equal(a.load(), 100); });
it('compareExchange fails when expected does not match', () => { const a = uint8atomic(); a.store(200); const actual = a.compareExchange(0, 100); assert.equal(actual, 200); assert.equal(a.load(), 200); });});