Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/toolkit/components/utils/test/unit/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  test_Sampling.js   Sprache: JAVA

 
"use strict";

const { Sampling } = ChromeUtils.importESModule(
  "resource://gre/modules/components-utils/Sampling.sys.mjs"
);

add_task(async function testStableSample() {
  // Absolute samples
  equal(
    await Sampling.stableSample("test", 1),
    true,
    "stableSample returns true for 100% sample"
  );
  equal(
    await Sampling.stableSample("test", 0),
    false,
    "stableSample returns false for 0% sample"
  );

  // Known samples. The numbers are nonces to make the tests pass
  equal(
    await Sampling.stableSample("test-0", 0.5),
    true,
    "stableSample returns true for known matching sample"
  );
  equal(
    await Sampling.stableSample("test-1", 0.5),
    false,
    "stableSample returns false for known non-matching sample"
  );
});

add_task(async function testBucketSample() {
  // Absolute samples
  equal(
    await Sampling.bucketSample("test", 0, 10, 10),
    true,
    "bucketSample returns true for 100% sample"
  );
  equal(
    await Sampling.bucketSample("test", 0, 0, 10),
    false,
    "bucketSample returns false for 0% sample"
  );

  // Known samples. The numbers are nonces to make the tests pass
  equal(
    await Sampling.bucketSample("test-0", 0, 5, 10),
    true,
    "bucketSample returns true for known matching sample"
  );
  equal(
    await Sampling.bucketSample("test-1", 0, 5, 10),
    false,
    "bucketSample returns false for known non-matching sample"
  );
});

add_task(async function testRatioSample() {
  // Invalid input
  await Assert.rejects(
    Sampling.ratioSample("test", []),
    /ratios must be at least 1 element long/,
    "ratioSample rejects for a list with no ratios"
  );

  // Absolute samples
  equal(
    await Sampling.ratioSample("test", [1]),
    0,
    "ratioSample returns 0 for a list with only 1 ratio"
  );
  equal(
    await Sampling.ratioSample("test", [0, 0, 1, 0]),
    2,
    "ratioSample returns the only non-zero bucket if all other buckets are zero"
  );

  // Known samples. The numbers are nonces to make the tests pass
  equal(
    await Sampling.ratioSample("test-0", [1, 1]),
    0,
    "ratioSample returns the correct index for known matching sample"
  );
  equal(
    await Sampling.ratioSample("test-1", [1, 1]),
    1,
    "ratioSample returns the correct index for known non-matching sample"
  );
});

add_task(async function testFractionToKey() {
  // Test that results are always 12 character hexadecimal strings.
  const expected_regex = /[0-9a-f]{12}/;
  const count = 100;
  let successes = 0;
  for (let i = 0; i < count; i++) {
    const p = Sampling.fractionToKey(Math.random());
    if (expected_regex.test(p)) {
      successes++;
    }
  }
  equal(successes, count, "fractionToKey makes keys the right length");
});

add_task(async function testTruncatedHash() {
  const expected_regex = /[0-9a-f]{12}/;
  const count = 100;
  let successes = 0;
  for (let i = 0; i < count; i++) {
    const h = await Sampling.truncatedHash(Math.random());
    if (expected_regex.test(h)) {
      successes++;
    }
  }
  equal(successes, count, "truncatedHash makes hashes the right length");
});

add_task(async function testBufferToHex() {
  const data = new ArrayBuffer(4);
  const view = new DataView(data);
  view.setUint8(0, 0xff);
  view.setUint8(1, 0x7f);
  view.setUint8(2, 0x3f);
  view.setUint8(3, 0x1f);
  equal(Sampling.bufferToHex(data), "ff7f3f1f");
});

Messung V0.5
C=94 H=99 G=96

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.