UNPKG

hypertune

Version:

[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt

50 lines (43 loc) 1.41 kB
import { expect, test, describe } from "vitest"; import calculateBayesianProbability from "./calculateBayesianProbability"; describe("calculateBayesianProbability", () => { const cases = [ { name: "Test two arms: 92% probability for control arm", successes: [1600, 1680], failures: [80000 - 1600, 80000 - 1680], expectedProbability: [50, 92], }, { name: "Test two arms: 49% probability for control arm", successes: [1660, 1680], failures: [79000 - 1660, 80000 - 1680], expectedProbability: [50, 49], }, { name: "Test two arms: 50% probability for control arm", successes: [16600, 16600], failures: [800000 - 16600, 800000 - 16600], expectedProbability: [50, 50], }, { name: "Test two arms: 0% probability for control arm", successes: [4000, 3000], failures: [80000 - 4000, 80000 - 3000], expectedProbability: [50, 0], }, { name: "Test multiple arms", successes: [1660, 1680, 1600], failures: [79000 - 1660, 80000 - 1680, 80000 - 1600], expectedProbability: [50, 49, 8], }, ]; test.each(cases)("$name", ({ successes, failures, expectedProbability }) => { expect( calculateBayesianProbability(successes, failures, 0).map((probability) => Math.round(probability * 100) ) ).toEqual(expectedProbability); }); });