Merge branch 'master' into 'master'
update to latest standards See merge request !1
This commit is contained in:
		
							
								
								
									
										2
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| import 'typings-global'; | import 'typings-global'; | ||||||
| import { expect } from 'smartchai'; | import { expect } from 'smartchai'; | ||||||
| import { tap } from './tapbundle.tap'; | import { tap } from './tapbundle.classes.tap'; | ||||||
| export { tap, expect }; | export { tap, expect }; | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); | |||||||
| require("typings-global"); | require("typings-global"); | ||||||
| const smartchai_1 = require("smartchai"); | const smartchai_1 = require("smartchai"); | ||||||
| exports.expect = smartchai_1.expect; | exports.expect = smartchai_1.expect; | ||||||
| const tapbundle_tap_1 = require("./tapbundle.tap"); | const tapbundle_classes_tap_1 = require("./tapbundle.classes.tap"); | ||||||
| exports.tap = tapbundle_tap_1.tap; | exports.tap = tapbundle_classes_tap_1.tap; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix5Q0FBa0M7QUFNaEMsaUJBTk8sa0JBQU0sQ0FNUDtBQUxSLG1EQUFxQztBQUluQyxjQUpPLG1CQUFHLENBSVAifQ== | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix5Q0FBa0M7QUFNaEMsb0NBQU07QUFMUixtRUFBNkM7QUFJM0MsMENBQUcifQ== | ||||||
| @@ -1,27 +1,4 @@ | |||||||
| import { HrtMeasurement } from 'early'; | import { TapTest, ITestFunction } from './tapbundle.classes.taptest'; | ||||||
| export declare type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess'; |  | ||||||
| export interface ITestFunction { |  | ||||||
|     (): Promise<any>; |  | ||||||
| } |  | ||||||
| export declare class TapTest { |  | ||||||
|     description: string; |  | ||||||
|     parallel: boolean; |  | ||||||
|     hrtMeasurement: HrtMeasurement; |  | ||||||
|     testFunction: ITestFunction; |  | ||||||
|     status: TTestStatus; |  | ||||||
|     /** |  | ||||||
|      * constructor |  | ||||||
|      */ |  | ||||||
|     constructor(optionsArg: { |  | ||||||
|         description: string; |  | ||||||
|         testFunction: ITestFunction; |  | ||||||
|         parallel: boolean; |  | ||||||
|     }); |  | ||||||
|     /** |  | ||||||
|      * run the test |  | ||||||
|      */ |  | ||||||
|     run(testKeyArg: number): Promise<void>; |  | ||||||
| } |  | ||||||
| export declare class Tap { | export declare class Tap { | ||||||
|     private _tests; |     private _tests; | ||||||
|     /** |     /** | ||||||
| @@ -29,7 +6,7 @@ export declare class Tap { | |||||||
|      * @param testDescription - A description of what the test does |      * @param testDescription - A description of what the test does | ||||||
|      * @param testFunction - A Function that returns a Promise and resolves or rejects |      * @param testFunction - A Function that returns a Promise and resolves or rejects | ||||||
|      */ |      */ | ||||||
|     test(testDescription: string, testFunction: ITestFunction): Promise<void>; |     test(testDescription: string, testFunction: ITestFunction): Promise<TapTest>; | ||||||
|     /** |     /** | ||||||
|      * A parallel test that will not be waited for before the next starts. |      * A parallel test that will not be waited for before the next starts. | ||||||
|      * @param testDescription - A description of what the test does |      * @param testDescription - A description of what the test does | ||||||
							
								
								
									
										85
									
								
								dist/tapbundle.classes.tap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								dist/tapbundle.classes.tap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | |||||||
|  | "use strict"; | ||||||
|  | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|  |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|  |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|  |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|  |         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||||||
|  |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const tapbundle_classes_taptest_1 = require("./tapbundle.classes.taptest"); | ||||||
|  | class Tap { | ||||||
|  |     constructor() { | ||||||
|  |         this._tests = []; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * Normal test function, will run one by one | ||||||
|  |      * @param testDescription - A description of what the test does | ||||||
|  |      * @param testFunction - A Function that returns a Promise and resolves or rejects | ||||||
|  |      */ | ||||||
|  |     test(testDescription, testFunction) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             let localTest = new tapbundle_classes_taptest_1.TapTest({ | ||||||
|  |                 description: testDescription, | ||||||
|  |                 testFunction: testFunction, | ||||||
|  |                 parallel: false | ||||||
|  |             }); | ||||||
|  |             this._tests.push(localTest); | ||||||
|  |             return localTest; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * A parallel test that will not be waited for before the next starts. | ||||||
|  |      * @param testDescription - A description of what the test does | ||||||
|  |      * @param testFunction - A Function that returns a Promise and resolves or rejects | ||||||
|  |      */ | ||||||
|  |     testParallel(testDescription, testFunction) { | ||||||
|  |         this._tests.push(new tapbundle_classes_taptest_1.TapTest({ | ||||||
|  |             description: testDescription, | ||||||
|  |             testFunction: testFunction, | ||||||
|  |             parallel: true | ||||||
|  |         })); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * tests leakage | ||||||
|  |      * @param testDescription - A description of what the test does | ||||||
|  |      * @param testFunction - A Function that returns a Promise and resolves or rejects | ||||||
|  |      */ | ||||||
|  |     testLeakage(testDescription, testFunction) { | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * starts the test evaluation | ||||||
|  |      */ | ||||||
|  |     start() { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             let promiseArray = []; | ||||||
|  |             // safeguard against empty test array | ||||||
|  |             if (this._tests.length === 0) { | ||||||
|  |                 console.log('no tests specified. Ending here!'); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |             console.log(`1..${this._tests.length}`); | ||||||
|  |             for (let testKey = 0; testKey < this._tests.length; testKey++) { | ||||||
|  |                 let currentTest = this._tests[testKey]; | ||||||
|  |                 let testPromise = currentTest.run(testKey); | ||||||
|  |                 if (currentTest.parallel) { | ||||||
|  |                     promiseArray.push(testPromise); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     yield testPromise; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             yield Promise.all(promiseArray); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * handle errors | ||||||
|  |      */ | ||||||
|  |     threw(err) { | ||||||
|  |         console.log(err); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.Tap = Tap; | ||||||
|  | exports.tap = new Tap(); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFwYnVuZGxlLmNsYXNzZXMudGFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFQSwyRUFBb0U7QUFFcEU7SUFBQTtRQUNVLFdBQU0sR0FBYyxFQUFFLENBQUE7SUFzRWhDLENBQUM7SUFwRUM7Ozs7T0FJRztJQUNHLElBQUksQ0FBRSxlQUF1QixFQUFFLFlBQTJCOztZQUM5RCxJQUFJLFNBQVMsR0FBRyxJQUFJLG1DQUFPLENBQUM7Z0JBQzFCLFdBQVcsRUFBRSxlQUFlO2dCQUM1QixZQUFZLEVBQUUsWUFBWTtnQkFDMUIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNsQixDQUFDO0tBQUE7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFFLGVBQXVCLEVBQUUsWUFBMkI7UUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxtQ0FBTyxDQUFDO1lBQzNCLFdBQVcsRUFBRSxlQUFlO1lBQzVCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBRSxlQUF1QixFQUFFLFlBQTJCO0lBRWpFLENBQUM7SUFFRDs7T0FFRztJQUNHLEtBQUs7O1lBQ1QsSUFBSSxZQUFZLEdBQW1CLEVBQUUsQ0FBQTtZQUVyQyxxQ0FBcUM7WUFDckMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO2dCQUMvQyxNQUFNLENBQUE7WUFDUixDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUN2QyxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzlELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ3RDLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUNoQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLE1BQU0sV0FBVyxDQUFBO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNqQyxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBRSxHQUFHO1FBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQixDQUFDO0NBQ0Y7QUF2RUQsa0JBdUVDO0FBRVUsUUFBQSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQSJ9 | ||||||
							
								
								
									
										27
									
								
								dist/tapbundle.classes.taptest.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								dist/tapbundle.classes.taptest.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | import { TapTools } from './tapbundle.classes.taptools'; | ||||||
|  | import { HrtMeasurement } from 'early'; | ||||||
|  | export declare type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout'; | ||||||
|  | export interface ITestFunction { | ||||||
|  |     (tapTools?: TapTools): Promise<any>; | ||||||
|  | } | ||||||
|  | export declare class TapTest { | ||||||
|  |     description: string; | ||||||
|  |     failureAllowed: boolean; | ||||||
|  |     hrtMeasurement: HrtMeasurement; | ||||||
|  |     parallel: boolean; | ||||||
|  |     status: TTestStatus; | ||||||
|  |     tapTools: TapTools; | ||||||
|  |     testFunction: ITestFunction; | ||||||
|  |     /** | ||||||
|  |      * constructor | ||||||
|  |      */ | ||||||
|  |     constructor(optionsArg: { | ||||||
|  |         description: string; | ||||||
|  |         testFunction: ITestFunction; | ||||||
|  |         parallel: boolean; | ||||||
|  |     }); | ||||||
|  |     /** | ||||||
|  |      * run the test | ||||||
|  |      */ | ||||||
|  |     run(testKeyArg: number): Promise<void>; | ||||||
|  | } | ||||||
							
								
								
									
										57
									
								
								dist/tapbundle.classes.taptest.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								dist/tapbundle.classes.taptest.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | "use strict"; | ||||||
|  | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|  |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|  |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|  |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|  |         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||||||
|  |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const tapbundle_classes_taptools_1 = require("./tapbundle.classes.taptools"); | ||||||
|  | // imported interfaces | ||||||
|  | const early_1 = require("early"); | ||||||
|  | class TapTest { | ||||||
|  |     /** | ||||||
|  |      * constructor | ||||||
|  |      */ | ||||||
|  |     constructor(optionsArg) { | ||||||
|  |         this.description = optionsArg.description; | ||||||
|  |         this.hrtMeasurement = new early_1.HrtMeasurement(); | ||||||
|  |         this.parallel = optionsArg.parallel; | ||||||
|  |         this.status = 'pending'; | ||||||
|  |         this.tapTools = new tapbundle_classes_taptools_1.TapTools(this); | ||||||
|  |         this.testFunction = optionsArg.testFunction; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * run the test | ||||||
|  |      */ | ||||||
|  |     run(testKeyArg) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             this.hrtMeasurement.start(); | ||||||
|  |             try { | ||||||
|  |                 yield this.testFunction(this.tapTools); | ||||||
|  |                 if (this.status === 'timeout') { | ||||||
|  |                     throw new Error('Test succeeded, but timed out...'); | ||||||
|  |                 } | ||||||
|  |                 this.hrtMeasurement.stop(); | ||||||
|  |                 console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); | ||||||
|  |                 this.status = 'success'; | ||||||
|  |             } | ||||||
|  |             catch (err) { | ||||||
|  |                 this.hrtMeasurement.stop(); | ||||||
|  |                 console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); | ||||||
|  |                 if (this.status === 'success') { | ||||||
|  |                     this.status = 'errorAfterSuccess'; | ||||||
|  |                     console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull'); | ||||||
|  |                 } | ||||||
|  |                 if (this.failureAllowed) { | ||||||
|  |                     console.log(`please note: failure allowed!`); | ||||||
|  |                 } | ||||||
|  |                 console.log(err); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.TapTest = TapTest; | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RhcGJ1bmRsZS5jbGFzc2VzLnRhcHRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLDZFQUF1RDtBQUV2RCxzQkFBc0I7QUFDdEIsaUNBQXNDO0FBVXRDO0lBUUU7O09BRUc7SUFDSCxZQUFhLFVBSVo7UUFDQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUE7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHNCQUFjLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFDQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNHLEdBQUcsQ0FBRSxVQUFrQjs7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDdEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM5QixNQUFNLElBQUksS0FBSyxDQUFFLGtDQUFrQyxDQUFDLENBQUE7Z0JBQ3RELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUE7Z0JBQ3RHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1lBQ3pCLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxVQUFVLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFBO2dCQUMxRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7b0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUVBQXlFLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztnQkFDRCxFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO2dCQUM5QyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbEIsQ0FBQztRQUNILENBQUM7S0FBQTtDQUNGO0FBbERELDBCQWtEQyJ9 | ||||||
							
								
								
									
										16
									
								
								dist/tapbundle.classes.taptools.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								dist/tapbundle.classes.taptools.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | export declare class TapTools { | ||||||
|  |     /** | ||||||
|  |      * the referenced TapTest | ||||||
|  |      */ | ||||||
|  |     private _tapTest; | ||||||
|  |     constructor(TapTestArg: any); | ||||||
|  |     /** | ||||||
|  |      * allow failure | ||||||
|  |      */ | ||||||
|  |     allowFailure(): void; | ||||||
|  |     /** | ||||||
|  |      * async/await delay method | ||||||
|  |      */ | ||||||
|  |     delayFor(timeMilliArg: any): Promise<void>; | ||||||
|  |     timeout(timeMilliArg: number): Promise<void>; | ||||||
|  | } | ||||||
							
								
								
									
										40
									
								
								dist/tapbundle.classes.taptools.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								dist/tapbundle.classes.taptools.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | "use strict"; | ||||||
|  | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|  |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|  |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|  |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|  |         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||||||
|  |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const plugins = require("./tapbundle.plugins"); | ||||||
|  | class TapTools { | ||||||
|  |     constructor(TapTestArg) { | ||||||
|  |         this._tapTest = TapTestArg; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * allow failure | ||||||
|  |      */ | ||||||
|  |     allowFailure() { | ||||||
|  |         this._tapTest.failureAllowed = true; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * async/await delay method | ||||||
|  |      */ | ||||||
|  |     delayFor(timeMilliArg) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             yield plugins.smartdelay.delayFor(timeMilliArg); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     timeout(timeMilliArg) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             yield plugins.smartdelay.delayFor(timeMilliArg); | ||||||
|  |             if (this._tapTest.status === 'pending') { | ||||||
|  |                 this._tapTest.status = 'timeout'; | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.TapTools = TapTools; | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXBidW5kbGUuY2xhc3Nlcy50YXB0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsK0NBQThDO0FBRzlDO0lBT0UsWUFBWSxVQUFVO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFBO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0csUUFBUSxDQUFDLFlBQVk7O1lBQ3pCLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDakQsQ0FBQztLQUFBO0lBRUssT0FBTyxDQUFFLFlBQW9COztZQUNqQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQy9DLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQTtZQUNsQyxDQUFDO1FBQ0gsQ0FBQztLQUFBO0NBRUY7QUFoQ0QsNEJBZ0NDIn0= | ||||||
							
								
								
									
										3
									
								
								dist/tapbundle.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/tapbundle.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,6 @@ | |||||||
| import 'typings-global'; | import 'typings-global'; | ||||||
| import * as early from 'early'; | import * as early from 'early'; | ||||||
| import * as leakage from 'leakage'; | import * as leakage from 'leakage'; | ||||||
|  | import * as smartdelay from 'smartdelay'; | ||||||
| import * as smartq from 'smartq'; | import * as smartq from 'smartq'; | ||||||
| export { early, smartq, leakage }; | export { early, smartdelay, smartq, leakage }; | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								dist/tapbundle.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/tapbundle.plugins.js
									
									
									
									
										vendored
									
									
								
							| @@ -5,6 +5,8 @@ const early = require("early"); | |||||||
| exports.early = early; | exports.early = early; | ||||||
| const leakage = require("leakage"); | const leakage = require("leakage"); | ||||||
| exports.leakage = leakage; | exports.leakage = leakage; | ||||||
|  | const smartdelay = require("smartdelay"); | ||||||
|  | exports.smartdelay = smartdelay; | ||||||
| const smartq = require("smartq"); | const smartq = require("smartq"); | ||||||
| exports.smartq = smartq; | exports.smartq = smartq; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXBidW5kbGUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwrQkFBOEI7QUFLNUIsc0JBQUs7QUFKUCxtQ0FBa0M7QUFNaEMsMEJBQU87QUFMVCxpQ0FBZ0M7QUFJOUIsd0JBQU0ifQ== | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXBidW5kbGUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwrQkFBOEI7QUFNNUIsc0JBQUs7QUFMUCxtQ0FBa0M7QUFRaEMsMEJBQU87QUFQVCx5Q0FBd0M7QUFLdEMsZ0NBQVU7QUFKWixpQ0FBZ0M7QUFLOUIsd0JBQU0ifQ== | ||||||
							
								
								
									
										120
									
								
								dist/tapbundle.tap.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										120
									
								
								dist/tapbundle.tap.js
									
									
									
									
										vendored
									
									
								
							| @@ -1,120 +0,0 @@ | |||||||
| "use strict"; |  | ||||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { |  | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |  | ||||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |  | ||||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |  | ||||||
|         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } |  | ||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |  | ||||||
|     }); |  | ||||||
| }; |  | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); |  | ||||||
| // imported interfaces |  | ||||||
| const early_1 = require("early"); |  | ||||||
| class TapTest { |  | ||||||
|     /** |  | ||||||
|      * constructor |  | ||||||
|      */ |  | ||||||
|     constructor(optionsArg) { |  | ||||||
|         this.description = optionsArg.description; |  | ||||||
|         this.testFunction = optionsArg.testFunction; |  | ||||||
|         this.parallel = optionsArg.parallel; |  | ||||||
|         this.status = 'pending'; |  | ||||||
|         this.hrtMeasurement = new early_1.HrtMeasurement(); |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * run the test |  | ||||||
|      */ |  | ||||||
|     run(testKeyArg) { |  | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|             this.hrtMeasurement.start(); |  | ||||||
|             try { |  | ||||||
|                 yield this.testFunction(); |  | ||||||
|                 this.hrtMeasurement.stop(); |  | ||||||
|                 console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); |  | ||||||
|                 this.status = 'success'; |  | ||||||
|             } |  | ||||||
|             catch (err) { |  | ||||||
|                 this.hrtMeasurement.stop(); |  | ||||||
|                 console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); |  | ||||||
|                 if (this.status === 'success') { |  | ||||||
|                     this.status = 'errorAfterSuccess'; |  | ||||||
|                     console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull'); |  | ||||||
|                 } |  | ||||||
|                 console.log(err); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| exports.TapTest = TapTest; |  | ||||||
| class Tap { |  | ||||||
|     constructor() { |  | ||||||
|         this._tests = []; |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * Normal test function, will run one by one |  | ||||||
|      * @param testDescription - A description of what the test does |  | ||||||
|      * @param testFunction - A Function that returns a Promise and resolves or rejects |  | ||||||
|      */ |  | ||||||
|     test(testDescription, testFunction) { |  | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|             this._tests.push(new TapTest({ |  | ||||||
|                 description: testDescription, |  | ||||||
|                 testFunction: testFunction, |  | ||||||
|                 parallel: false |  | ||||||
|             })); |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * A parallel test that will not be waited for before the next starts. |  | ||||||
|      * @param testDescription - A description of what the test does |  | ||||||
|      * @param testFunction - A Function that returns a Promise and resolves or rejects |  | ||||||
|      */ |  | ||||||
|     testParallel(testDescription, testFunction) { |  | ||||||
|         this._tests.push(new TapTest({ |  | ||||||
|             description: testDescription, |  | ||||||
|             testFunction: testFunction, |  | ||||||
|             parallel: true |  | ||||||
|         })); |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * tests leakage |  | ||||||
|      * @param testDescription - A description of what the test does |  | ||||||
|      * @param testFunction - A Function that returns a Promise and resolves or rejects |  | ||||||
|      */ |  | ||||||
|     testLeakage(testDescription, testFunction) { |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * starts the test evaluation |  | ||||||
|      */ |  | ||||||
|     start() { |  | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |  | ||||||
|             let promiseArray = []; |  | ||||||
|             // safeguard against empty test array |  | ||||||
|             if (this._tests.length === 0) { |  | ||||||
|                 console.log('no tests specified. Ending here!'); |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|             console.log(`1..${this._tests.length}`); |  | ||||||
|             for (let testKey = 0; testKey < this._tests.length; testKey++) { |  | ||||||
|                 let currentTest = this._tests[testKey]; |  | ||||||
|                 let testPromise = currentTest.run(testKey); |  | ||||||
|                 if (currentTest.parallel) { |  | ||||||
|                     promiseArray.push(testPromise); |  | ||||||
|                 } |  | ||||||
|                 else { |  | ||||||
|                     yield testPromise; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             yield Promise.all(promiseArray); |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * handle errors |  | ||||||
|      */ |  | ||||||
|     threw(err) { |  | ||||||
|         console.log(err); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| exports.Tap = Tap; |  | ||||||
| exports.tap = new Tap(); |  | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLnRhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RhcGJ1bmRsZS50YXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUlBLHNCQUFzQjtBQUN0QixpQ0FBc0M7QUFVdEM7SUFPRTs7T0FFRztJQUNILFlBQWEsVUFJWjtRQUNDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQTtRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUE7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFBO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxzQkFBYyxFQUFFLENBQUE7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0csR0FBRyxDQUFFLFVBQWtCOztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUE7Z0JBQ3RHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1lBQ3pCLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxVQUFVLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFBO2dCQUMxRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7b0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUVBQXlFLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2xCLENBQUM7UUFDSCxDQUFDO0tBQUE7Q0FDRjtBQTFDRCwwQkEwQ0M7QUFFRDtJQUFBO1FBQ1UsV0FBTSxHQUFjLEVBQUUsQ0FBQTtJQW9FaEMsQ0FBQztJQWxFQzs7OztPQUlHO0lBQ0csSUFBSSxDQUFFLGVBQXVCLEVBQUUsWUFBMkI7O1lBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDO2dCQUMzQixXQUFXLEVBQUUsZUFBZTtnQkFDNUIsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQyxDQUFBO1FBQ0wsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBRSxlQUF1QixFQUFFLFlBQTJCO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDO1lBQzNCLFdBQVcsRUFBRSxlQUFlO1lBQzVCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBRSxlQUF1QixFQUFFLFlBQTJCO0lBRWpFLENBQUM7SUFFRDs7T0FFRztJQUNHLEtBQUs7O1lBQ1QsSUFBSSxZQUFZLEdBQW1CLEVBQUUsQ0FBQTtZQUVyQyxxQ0FBcUM7WUFDckMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO2dCQUMvQyxNQUFNLENBQUE7WUFDUixDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUN2QyxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzlELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ3RDLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUNoQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLE1BQU0sV0FBVyxDQUFBO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNqQyxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBRSxHQUFHO1FBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQixDQUFDO0NBQ0Y7QUFyRUQsa0JBcUVDO0FBRVUsUUFBQSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQSJ9 |  | ||||||
| @@ -21,6 +21,7 @@ | |||||||
|     "early": "^2.1.1", |     "early": "^2.1.1", | ||||||
|     "leakage": "^0.2.0", |     "leakage": "^0.2.0", | ||||||
|     "smartchai": "^1.0.3", |     "smartchai": "^1.0.3", | ||||||
|  |     "smartdelay": "^1.0.1", | ||||||
|     "smartq": "^1.1.1", |     "smartq": "^1.1.1", | ||||||
|     "typings-global": "^1.0.16" |     "typings-global": "^1.0.16" | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -1,7 +1,32 @@ | |||||||
| import { tap, expect } from '../dist/index' | import { tap, expect } from '../dist/index' | ||||||
|  |  | ||||||
| tap.test('my first test', async () => { | let test1 = tap.test('my first test -> expect true to be true', async () => { | ||||||
|   return expect(true).to.be.true |   return expect(true).to.be.true | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | let test2 = tap.test('my second test', async (tools) => { | ||||||
|  |   await tools.delayFor(1000) | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let test3 = tap.test('my third test -> test2 should take longer than test1 and endure at least 1000ms', async () => { | ||||||
|  |   expect((await test1).hrtMeasurement.milliSeconds < (await test2).hrtMeasurement.milliSeconds).to.be.true | ||||||
|  |   expect((await test2).hrtMeasurement.milliSeconds > 1000).to.be.true | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let test4 = tap.test('my 4th test -> should fail', async (tools) => { | ||||||
|  |   tools.allowFailure() | ||||||
|  |   expect(false).to.be.true | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let test5 = tap.test('my 5th test -> should pass in about 500ms', async (tools) => { | ||||||
|  |   tools.timeout(1000) | ||||||
|  |   await tools.delayFor(500) | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let test6 = tap.test('my 6th test -> should fail after 1000ms', async (tools) => { | ||||||
|  |   tools.allowFailure() | ||||||
|  |   tools.timeout(1000) | ||||||
|  |   await tools.delayFor(2000) | ||||||
|  | }) | ||||||
|  |  | ||||||
| tap.start() | tap.start() | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import 'typings-global' | import 'typings-global' | ||||||
| import { expect } from 'smartchai' | import { expect } from 'smartchai' | ||||||
| import { tap } from './tapbundle.tap' | import { tap } from './tapbundle.classes.tap' | ||||||
|  |  | ||||||
|  |  | ||||||
| export { | export { | ||||||
|   | |||||||
| @@ -1,61 +1,6 @@ | |||||||
| import * as plugins from './tapbundle.plugins' | import * as plugins from './tapbundle.plugins' | ||||||
| 
 | 
 | ||||||
| import { tapCreator } from './tapbundle.tapcreator' | import { TapTest, ITestFunction } from './tapbundle.classes.taptest' | ||||||
| 
 |  | ||||||
| // imported interfaces
 |  | ||||||
| import { HrtMeasurement } from 'early' |  | ||||||
| 
 |  | ||||||
| // interfaces
 |  | ||||||
| export type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' |  | ||||||
| 
 |  | ||||||
| export interface ITestFunction { |  | ||||||
|   (): Promise<any> |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| export class TapTest { |  | ||||||
|   description: string |  | ||||||
|   parallel: boolean |  | ||||||
|   hrtMeasurement: HrtMeasurement |  | ||||||
|   testFunction: ITestFunction |  | ||||||
|   status: TTestStatus |  | ||||||
| 
 |  | ||||||
|   /** |  | ||||||
|    * constructor |  | ||||||
|    */ |  | ||||||
|   constructor (optionsArg: { |  | ||||||
|     description: string, |  | ||||||
|     testFunction: ITestFunction, |  | ||||||
|     parallel: boolean |  | ||||||
|   }) { |  | ||||||
|     this.description = optionsArg.description |  | ||||||
|     this.testFunction = optionsArg.testFunction |  | ||||||
|     this.parallel = optionsArg.parallel |  | ||||||
|     this.status = 'pending' |  | ||||||
|     this.hrtMeasurement = new HrtMeasurement() |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   /** |  | ||||||
|    * run the test |  | ||||||
|    */ |  | ||||||
|   async run (testKeyArg: number) { |  | ||||||
|     this.hrtMeasurement.start() |  | ||||||
|     try { |  | ||||||
|       await this.testFunction() |  | ||||||
|       this.hrtMeasurement.stop() |  | ||||||
|       console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) |  | ||||||
|       this.status = 'success' |  | ||||||
|     } catch (err) { |  | ||||||
|       this.hrtMeasurement.stop() |  | ||||||
|       console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) |  | ||||||
|       if (this.status === 'success') { |  | ||||||
|         this.status = 'errorAfterSuccess' |  | ||||||
|         console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull') |  | ||||||
|       } |  | ||||||
|       console.log(err) |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| export class Tap { | export class Tap { | ||||||
|   private _tests: TapTest[] = [] |   private _tests: TapTest[] = [] | ||||||
| @@ -66,11 +11,13 @@ export class Tap { | |||||||
|    * @param testFunction - A Function that returns a Promise and resolves or rejects |    * @param testFunction - A Function that returns a Promise and resolves or rejects | ||||||
|    */ |    */ | ||||||
|   async test (testDescription: string, testFunction: ITestFunction) { |   async test (testDescription: string, testFunction: ITestFunction) { | ||||||
|     this._tests.push(new TapTest({ |     let localTest = new TapTest({ | ||||||
|       description: testDescription, |       description: testDescription, | ||||||
|       testFunction: testFunction, |       testFunction: testFunction, | ||||||
|       parallel: false |       parallel: false | ||||||
|     })) |     }) | ||||||
|  |     this._tests.push(localTest) | ||||||
|  |     return localTest | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
							
								
								
									
										65
									
								
								ts/tapbundle.classes.taptest.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								ts/tapbundle.classes.taptest.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | import { tapCreator } from './tapbundle.tapcreator' | ||||||
|  | import { TapTools } from './tapbundle.classes.taptools' | ||||||
|  |  | ||||||
|  | // imported interfaces | ||||||
|  | import { HrtMeasurement } from 'early' | ||||||
|  |  | ||||||
|  | // interfaces | ||||||
|  | export type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout' | ||||||
|  |  | ||||||
|  | export interface ITestFunction { | ||||||
|  |   (tapTools?: TapTools): Promise<any> | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | export class TapTest { | ||||||
|  |   description: string | ||||||
|  |   failureAllowed: boolean | ||||||
|  |   hrtMeasurement: HrtMeasurement | ||||||
|  |   parallel: boolean | ||||||
|  |   status: TTestStatus | ||||||
|  |   tapTools: TapTools | ||||||
|  |   testFunction: ITestFunction | ||||||
|  |   /** | ||||||
|  |    * constructor | ||||||
|  |    */ | ||||||
|  |   constructor (optionsArg: { | ||||||
|  |     description: string, | ||||||
|  |     testFunction: ITestFunction, | ||||||
|  |     parallel: boolean | ||||||
|  |   }) { | ||||||
|  |     this.description = optionsArg.description | ||||||
|  |     this.hrtMeasurement = new HrtMeasurement() | ||||||
|  |     this.parallel = optionsArg.parallel | ||||||
|  |     this.status = 'pending' | ||||||
|  |     this.tapTools = new TapTools(this) | ||||||
|  |     this.testFunction = optionsArg.testFunction | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * run the test | ||||||
|  |    */ | ||||||
|  |   async run (testKeyArg: number) { | ||||||
|  |     this.hrtMeasurement.start() | ||||||
|  |     try { | ||||||
|  |       await this.testFunction(this.tapTools) | ||||||
|  |       if (this.status === 'timeout') { | ||||||
|  |         throw new Error ('Test succeeded, but timed out...') | ||||||
|  |       } | ||||||
|  |       this.hrtMeasurement.stop() | ||||||
|  |       console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) | ||||||
|  |       this.status = 'success' | ||||||
|  |     } catch (err) { | ||||||
|  |       this.hrtMeasurement.stop() | ||||||
|  |       console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) | ||||||
|  |       if (this.status === 'success') { | ||||||
|  |         this.status = 'errorAfterSuccess' | ||||||
|  |         console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull') | ||||||
|  |       } | ||||||
|  |       if(this.failureAllowed) { | ||||||
|  |         console.log(`please note: failure allowed!`) | ||||||
|  |       } | ||||||
|  |       console.log(err) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								ts/tapbundle.classes.taptools.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ts/tapbundle.classes.taptools.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | import * as plugins from './tapbundle.plugins' | ||||||
|  | import { TapTest } from './tapbundle.classes.taptest' | ||||||
|  |  | ||||||
|  | export class TapTools { | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * the referenced TapTest | ||||||
|  |    */ | ||||||
|  |   private _tapTest: TapTest | ||||||
|  |  | ||||||
|  |   constructor(TapTestArg) { | ||||||
|  |     this._tapTest = TapTestArg | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * allow failure | ||||||
|  |    */ | ||||||
|  |   allowFailure() { | ||||||
|  |     this._tapTest.failureAllowed = true | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * async/await delay method | ||||||
|  |    */ | ||||||
|  |   async delayFor(timeMilliArg) { | ||||||
|  |     await plugins.smartdelay.delayFor(timeMilliArg) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async timeout (timeMilliArg: number) { | ||||||
|  |     await plugins.smartdelay.delayFor(timeMilliArg) | ||||||
|  |     if (this._tapTest.status === 'pending') { | ||||||
|  |       this._tapTest.status = 'timeout' | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -1,10 +1,12 @@ | |||||||
| import 'typings-global' | import 'typings-global' | ||||||
| import * as early from 'early' | import * as early from 'early' | ||||||
| import * as leakage from 'leakage' | import * as leakage from 'leakage' | ||||||
|  | import * as smartdelay from 'smartdelay' | ||||||
| import * as smartq from 'smartq' | import * as smartq from 'smartq' | ||||||
|  |  | ||||||
| export { | export { | ||||||
|   early, |   early, | ||||||
|  |   smartdelay, | ||||||
|   smartq, |   smartq, | ||||||
|   leakage |   leakage | ||||||
| } | } | ||||||
|   | |||||||
| @@ -210,6 +210,12 @@ smartchai@^1.0.3: | |||||||
|     chai-as-promised "^6.0.0" |     chai-as-promised "^6.0.0" | ||||||
|     chai-string "^1.3.0" |     chai-string "^1.3.0" | ||||||
|  |  | ||||||
|  | smartdelay@^1.0.1: | ||||||
|  |   version "1.0.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.1.tgz#687f8bcc09d7c62c9c5a8a1771c1aba3aff54156" | ||||||
|  |   dependencies: | ||||||
|  |     typings-global "^1.0.14" | ||||||
|  |  | ||||||
| smartq@^1.1.1: | smartq@^1.1.1: | ||||||
|   version "1.1.1" |   version "1.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3" |   resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user