Offload functions to worker threads with shared memory primitives for Node.js.
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

at e2cebd539403475e2f4e79d55ca1a84a0ce3510d 89 lines 2.3 kB view raw
1import { describe, it } from 'node:test'; 2import assert from 'node:assert/strict'; 3import { boolatomic } from 'moroutine'; 4 5describe('BoolAtomic', () => { 6 it('self-allocates and initializes to false', () => { 7 const a = boolatomic(); 8 assert.equal(a.load(), false); 9 }); 10 11 it('stores and loads true', () => { 12 const a = boolatomic(); 13 a.store(true); 14 assert.equal(a.load(), true); 15 }); 16 17 it('stores and loads false', () => { 18 const a = boolatomic(); 19 a.store(true); 20 a.store(false); 21 assert.equal(a.load(), false); 22 }); 23 24 it('exposes byteSize of 1', () => { 25 assert.equal(boolatomic.byteSize, 1); 26 }); 27 28 it('and(false) clears, returns previous', () => { 29 const a = boolatomic(); 30 a.store(true); 31 assert.equal(a.and(false), true); 32 assert.equal(a.load(), false); 33 }); 34 35 it('and(true) preserves, returns previous', () => { 36 const a = boolatomic(); 37 a.store(true); 38 assert.equal(a.and(true), true); 39 assert.equal(a.load(), true); 40 }); 41 42 it('or(true) sets, returns previous', () => { 43 const a = boolatomic(); 44 assert.equal(a.or(true), false); 45 assert.equal(a.load(), true); 46 }); 47 48 it('or(false) preserves, returns previous', () => { 49 const a = boolatomic(); 50 a.store(true); 51 assert.equal(a.or(false), true); 52 assert.equal(a.load(), true); 53 }); 54 55 it('xor(true) toggles, returns previous', () => { 56 const a = boolatomic(); 57 a.store(true); 58 assert.equal(a.xor(true), true); 59 assert.equal(a.load(), false); 60 }); 61 62 it('xor(false) preserves, returns previous', () => { 63 const a = boolatomic(); 64 a.store(true); 65 assert.equal(a.xor(false), true); 66 assert.equal(a.load(), true); 67 }); 68 69 it('exchange returns previous value', () => { 70 const a = boolatomic(); 71 a.store(true); 72 assert.equal(a.exchange(false), true); 73 assert.equal(a.load(), false); 74 }); 75 76 it('compareExchange succeeds when expected matches', () => { 77 const a = boolatomic(); 78 a.store(true); 79 assert.equal(a.compareExchange(true, false), true); 80 assert.equal(a.load(), false); 81 }); 82 83 it('compareExchange fails when expected does not match', () => { 84 const a = boolatomic(); 85 a.store(true); 86 assert.equal(a.compareExchange(false, false), true); 87 assert.equal(a.load(), true); 88 }); 89});