1 /* ***** BEGIN LICENSE BLOCK *****
  2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3  *
  4  * The contents of this file are subject to the Mozilla Public License Version
  5  * 1.1 (the "License"); you may not use this file except in compliance with
  6  * the License. You may obtain a copy of the License at
  7  * http://www.mozilla.org/MPL/
  8  *
  9  * Software distributed under the License is distributed on an "AS IS" basis,
 10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 11  * for the specific language governing rights and limitations under the
 12  * License.
 13  *
 14  * The Original Code is MozMill Test code.
 15  *
 16  * The Initial Developer of the Original Code is the Mozilla Foundation.
 17  * Portions created by the Initial Developer are Copyright (C) 2011
 18  * the Initial Developer. All Rights Reserved.
 19  *
 20  * Contributor(s):
 21  *   Henrik Skupin <mail@hskupin.info> (Original Author)
 22  *
 23  * Alternatively, the contents of this file may be used under the terms of
 24  * either the GNU General Public License Version 2 or later (the "GPL"), or
 25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 26  * in which case the provisions of the GPL or the LGPL are applicable instead
 27  * of those above. If you wish to allow use of your version of this file only
 28  * under the terms of either the GPL or the LGPL, and not to allow others to
 29  * use your version of this file under the terms of the MPL, indicate your
 30  * decision by deleting the provisions above and replace them with the notice
 31  * and other provisions required by the GPL or the LGPL. If you do not delete
 32  * the provisions above, a recipient may use your version of this file under
 33  * the terms of any one of the MPL, the GPL or the LGPL.
 34  *
 35  * ***** END LICENSE BLOCK ***** */
 36 
 37 /**
 38  * @name errors
 39  * @namespace Defines error classes to be used for exceptions.
 40  */
 41 var errors = exports;
 42 
 43 
 44 /**
 45  * All methods for fatal assertions as implemented in assertions.Assert throw
 46  * an AssertionError as exception type if a test fails.
 47  *
 48  * @class Error class which is used by Assert to raise an assertion exception.
 49  * @constructor
 50  * @memberOf errors
 51  * @see assertions.Assert
 52  * @param {object} aResult
 53  *   Test result details used for error reporting.
 54  *   <dl>
 55  *     <dd>fileName</dd>
 56  *     <dt>Name of the file in which the assertion failed.</dt>
 57  *     <dd>function</dd>
 58  *     <dt>Function in which the assertion failed.</dt>
 59  *     <dd>lineNumber</dd>
 60  *     <dt>Line number of the file in which the assertion failed.</dt>
 61  *     <dd>message</dd>
 62  *     <dt>Message why the assertion failed.</dt>
 63  *   </dl>
 64  * @returns {AssertionError} Instance of the AssertionError class.
 65  */
 66 function AssertionError(aResult) {
 67   let error = Object.create(AssertionError.prototype);
 68 
 69   error.message = aResult.message;
 70   error.fileName = aResult.fileName;
 71   error.lineNumber = aResult.lineNumber;
 72   error.function = aResult.function;
 73 
 74   return error;
 75 }
 76 
 77 AssertionError.prototype = Object.create(Error.prototype,
 78 {
 79   constructor: { value: AssertionError },
 80   name: { value: "AssertionError" }
 81 });
 82 
 83 
 84 // Export of classes
 85 errors.AssertionError = AssertionError;
 86