themer
Version: 
Customizable theme creator for editors, terminals, wallpaper, and more.
38 lines (33 loc) • 760 B
text/typescript
import test from 'ava';
import { weightedRandom } from './index.js';
test('weightedRandom', (t) => {
  const testData = new Map([
    ['a', 1],
    ['b', 3],
    ['c', 1],
  ]);
  const total = [...testData.values()].reduce(
    (total, weight) => total + weight,
    0,
  );
  const samples = 1000;
  let aFrequency = 0,
    bFrequency = 0,
    cFrequency = 0;
  for (let i = 0; i < total * samples; i++) {
    switch (weightedRandom(testData)) {
      case 'a':
        aFrequency++;
        break;
      case 'b':
        bFrequency++;
        break;
      case 'c':
        cFrequency++;
        break;
    }
  }
  t.is(Math.round(aFrequency / samples), 1);
  t.is(Math.round(bFrequency / samples), 3);
  t.is(Math.round(cFrequency / samples), 1);
});