Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  asserts.js   Sprache: JAVA

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */



load(libdir + "non262.js");

if (typeof assertWarning === 'undefined') {
    var assertWarning = function assertWarning(f, pattern) {
        enableLastWarning();

        // Verify that a warning is issued.
        clearLastWarning();
        f();
        var warning = getLastWarning();
        clearLastWarning();

        disableLastWarning();

        if (warning) {
            if (!warning.message.match(pattern)) {
                throw new Error(`assertWarning failed: "${warning.message}" does not match "${pattern}"`);
            }
            return;
        }

        throw new Error("assertWarning failed: no warning");
    };
}

if (typeof assertNoWarning === 'undefined') {
    var assertNoWarning = function assertNoWarning(f, msg) {
        enableLastWarning();

        // Verify that no warning is issued.
        clearLastWarning();
        f();
        var warning = getLastWarning();
        clearLastWarning();

        disableLastWarning();

        if (warning) {
            if (msg) {
                print("assertNoWarning: " + msg);
            }

            throw Error("assertNoWarning: Unexpected warning when calling: " + f);
        }
    };
}

if (typeof assertErrorMessage === 'undefined') {
  var assertErrorMessage = function assertErrorMessage(f, ctor, test, message) {
    try {
      f();
    } catch (e) {
      // Propagate non-specific OOM errors, we never test for these with
      // assertErrorMessage, as there is no meaningful ctor.
      if (e === "out of memory") {
        throw e;
      }
      if (!(e instanceof ctor)) {
        throw new Error((message ? `${message}: ` : "") + `assertion failed: expected exception ${ctor.name}, got ${e}`);
      }
      if (typeof test == "string") {
        if (test == e.message) {
          return;
        }
        throw new Error((message ? `${message}: ` : "") + `assertion failed: expected message "${test}", got "${e.message}"`);
      }
      if (test instanceof RegExp) {
        if (test.test(e.message)) {
          return;
        }
        throw new Error((message ? `${message}: ` : "") + `assertion failed: expected message ${test.toString()}, got "${e.message}"`);
      }
      if (!test) {
        throw new Error((message ? `${message}: ` : "") + `assertErrorMessage requires an error message`);
      }
      throw new Error((message ? `${message}: ` : "") + `unknown failure in assertErrorMessage: ${e}`);
    }
    throw new Error((message ? `${message}: ` : "") + `assertion failed: expected exception ${ctor.name}, no exception thrown`);
  };
}

if (typeof assertTypeErrorMessage === 'undefined') {
  var assertTypeErrorMessage = function assertTypeErrorMessage(f, test) {
    assertErrorMessage(f, TypeError, test);
  };
}

if (typeof assertRangeErrorMessage === 'undefined') {
  var assertRangeErrorMessage = function assertRangeErrorMessage(f, test) {
    assertErrorMessage(f, RangeError, test);
  };
}

if (typeof assertArrayEq === 'undefined') {
  var assertArrayEq = function assertArrayEq(a,b) {
    assertEq(a.length, b.length);
    for (var i = 0; i < a.length; i++) {
      assertEq(a[i], b[i]);
    }
  };
}

if (typeof assertSuppressionChain === 'undefined' && typeof globalThis.SuppressedError !== 'undefined') {

  function errorChainVerificationHelper(err, suppressions, verifier) {
    let i = 0;
    while (err instanceof SuppressedError) {
      assertEq(verifier(err.error, suppressions[i]), true);
      err = err.suppressed;
      i++;
    }
    assertEq(verifier(err, suppressions[i]), true);
    assertEq(i, suppressions.length - 1);
  }

  var assertSuppressionChain = function assertSuppressionChain(fn, suppressions) {
    let caught = false;
    try {
      fn();
    } catch (err) {
      caught = true;
      errorChainVerificationHelper(err, suppressions, function(err, suppression) {
        return err === suppression;
      });
    } finally {
      assertEq(caught, true);
    }
  }

  var assertSuppressionChainAsync = function assertSuppressionChainAsync(f, suppressions) {
    let thenCalled = false;
    let catchCalled = false;
    let e = null;
    f().then(() => { thenCalled = true; }, err => { catchCalled = true; e = err; });
    drainJobQueue();
    assertEq(thenCalled, false);
    assertEq(catchCalled, true);
    assertSuppressionChain(() => { throw e; }, suppressions);
  };

  var assertSuppressionChainErrorMessages = function assertSuppressionChainErrorMessages(fn, suppressions) {
    let caught = false;
    try {
      fn();
    } catch (err) {
      caught = true;
      errorChainVerificationHelper(err, suppressions, function(err, suppression) {
        return err instanceof suppression.ctor && err.message === suppression.message;
      });
    } finally {
      assertEq(caught, true);
    }
  }
}

if (typeof assertThrowsInstanceOfAsync === 'undefined') {
  var assertThrowsInstanceOfAsync = function assertThrowsInstanceOfAsync(f, ctor, message) {
    let thenCalled = false;
    let catchCalled = false;
    let e = null;
    f().then(() => { thenCalled = true; }, err => { catchCalled = true; e = err; });
    drainJobQueue();
    assertEq(thenCalled, false);
    assertEq(catchCalled, true);
    assertThrowsInstanceOf(() => { throw e; }, ctor, message);
  };
}

Messung V0.5
C=98 H=97 G=97

¤ Dauer der Verarbeitung: 0.10 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge