@flemist/test-variants 0.0.5 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,7 +18,8 @@ const count = await testVariants({
18
18
  b: ['3', '4'],
19
19
  c: [true, false],
20
20
  })({
21
- forceAwaitInterval: 10000, // await after each 10 seconds, needed for karma tests
21
+ pauseInterval: 10000, // pause after each 10 seconds and log inerations count, it needed for karma tests
22
+ pauseTime: 10, // continue after 10 milliseconds
22
23
  })
23
24
 
24
25
  // result == [
@@ -1,26 +1,33 @@
1
- !function(r){"use strict"
2
- ;r.createTestVariants=function(r){
3
- return function(e){return function(t){
4
- var n=(void 0===t?{}:t).forceAwaitInterval,o=Object.keys(e),a=Object.values(e),f=o.length,u={}
5
- ;function c(r){var e=a[r]
6
- ;return"function"==typeof e&&(e=e(u)),e}
7
- for(var i=[],v=[],l=0;l<f;l++)i[l]=-1,v[l]=[]
8
- ;function s(){for(var r=f-1;r>=0;r--){var e=i[r]+1
9
- ;if(e<v[r].length){
10
- for(i[r]=e,u[o[r]]=v[r][e],r++;r<f;r++){var t=c(r)
11
- ;if(0===t.length)break;i[r]=0,v[r]=t,u[o[r]]=t[0]}
12
- if(r>=f)return!0}}return!1}v[0]=c(0)
13
- ;var h=0,y=!1,b=0;function w(r){
14
- console.error(JSON.stringify(u,null,2)),console.error(r)
15
- ;var e=Date.now()
16
- ;throw Date.now()-e>50&&b<5&&(y=!0,g(0),b++),r}
17
- var p=Date.now();function g(e){var t=n&&Date.now()
18
- ;t&&t-p>=n&&(console.log(h),p=t),
19
- h+="number"==typeof e?e:1;for(var o=t;y||s();)try{
20
- var a=r(u)
21
- ;if("object"==typeof a&&a&&"function"==typeof a.then)return a.then(g).catch(w)
22
- ;if(o&&Date.now()-o>=n)return Promise.resolve(a).then(g)
23
- ;h+="number"==typeof a?a:1}catch(r){w(r)}return h}
24
- return g(0)}}
25
- },Object.defineProperty(r,"__esModule",{value:!0})
1
+ !function(e){"use strict"
2
+ ;e.createTestVariants=function(e){
3
+ return function(t){return function(n){
4
+ var r=void 0===n?{}:n,o=r.pauseInterval,u=void 0===o?1e3:o,a=r.pauseTime,i=void 0===a?10:a,f=r.logInterval,c=void 0===f?1e4:f,v=r.logCompleted,l=void 0===v||v,s=Object.keys(t),p=Object.values(t),y=s.length,h={}
5
+ ;function b(e){var t=p[e]
6
+ ;return"function"==typeof t&&(t=t(h)),t}
7
+ for(var d=[],g=[],m=0;m<y;m++)d[m]=-1,g[m]=[]
8
+ ;function w(){for(var e=y-1;e>=0;e--){var t=d[e]+1
9
+ ;if(t<g[e].length){
10
+ for(d[e]=t,h[s[e]]=g[e][t],e++;e<y;e++){var n=b(e)
11
+ ;if(0===n.length)break;d[e]=0,g[e]=n,h[s[e]]=n[0]}
12
+ if(e>=y)return!0}}return!1}g[0]=b(0)
13
+ ;var j=0,D=!1,O=0;function P(e){
14
+ console.error(JSON.stringify(h,null,2)),console.error(e)
15
+ ;var t=Date.now()
16
+ ;throw Date.now()-t>50&&O<5&&(D=!0,k(0),O++),e}
17
+ var T=Date.now();function k(t){
18
+ var n=(c||u)&&Date.now()
19
+ ;n&&n-T>=c&&(console.log(j),T=n),j+="number"==typeof t?t:1
20
+ ;for(var r=u&&n,o=function(){try{var t=e(h)
21
+ ;if("object"==typeof t&&t&&"function"==typeof t.then)return{
22
+ value:t.then(k).catch(P)}
23
+ ;if(r&&Date.now()-r>=u)return{
24
+ value:(i?new Promise((function(e){
25
+ setTimeout((function(){e(t)}),i)
26
+ })):Promise.resolve(t)).then(k)}
27
+ ;j+="number"==typeof t?t:1}catch(e){P(e)}
28
+ };D||w();){var a=o()
29
+ ;if("object"==typeof a)return a.value}
30
+ return l&&console.log("variants: "+j),j}
31
+ return k(0)}}
32
+ },Object.defineProperty(e,"__esModule",{value:!0})
26
33
  }({});
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable @typescript-eslint/no-shadow */
4
4
  function createTestVariants(test) {
5
5
  return function testVariantsArgs(args) {
6
- return function testVariantsCall({ forceAwaitInterval, } = {}) {
6
+ return function testVariantsCall({ pauseInterval = 1000, pauseTime = 10, logInterval = 10000, logCompleted = true, } = {}) {
7
7
  const argsKeys = Object.keys(args);
8
8
  const argsValues = Object.values(args);
9
9
  const argsLength = argsKeys.length;
@@ -61,17 +61,23 @@ function createTestVariants(test) {
61
61
  }
62
62
  throw err;
63
63
  }
64
+ function onCompleted() {
65
+ if (logCompleted) {
66
+ console.log('variants: ' + iterations);
67
+ }
68
+ }
64
69
  let prevLogTime = Date.now();
65
70
  function next(value) {
66
- const now = forceAwaitInterval && Date.now();
71
+ const now = (logInterval || pauseInterval) && Date.now();
67
72
  if (now) {
68
- if (now - prevLogTime >= forceAwaitInterval) {
73
+ if (now - prevLogTime >= logInterval) {
74
+ // the log is required to prevent the karma browserNoActivityTimeout
69
75
  console.log(iterations);
70
76
  prevLogTime = now;
71
77
  }
72
78
  }
73
79
  iterations += typeof value === 'number' ? value : 1;
74
- const syncCallStartTime = now;
80
+ const syncCallStartTime = pauseInterval && now;
75
81
  while (debug || nextVariant()) {
76
82
  try {
77
83
  const promiseOrIterations = test(variantArgs);
@@ -80,8 +86,15 @@ function createTestVariants(test) {
80
86
  && typeof promiseOrIterations.then === 'function') {
81
87
  return promiseOrIterations.then(next).catch(onError);
82
88
  }
83
- if (syncCallStartTime && Date.now() - syncCallStartTime >= forceAwaitInterval) {
84
- return Promise.resolve(promiseOrIterations).then(next);
89
+ if (syncCallStartTime && Date.now() - syncCallStartTime >= pauseInterval) {
90
+ const pausePromise = pauseTime
91
+ ? new Promise(resolve => {
92
+ setTimeout(() => {
93
+ resolve(promiseOrIterations);
94
+ }, pauseTime);
95
+ })
96
+ : Promise.resolve(promiseOrIterations);
97
+ return pausePromise.then(next);
85
98
  }
86
99
  iterations += typeof promiseOrIterations === 'number' ? promiseOrIterations : 1;
87
100
  }
@@ -89,6 +102,7 @@ function createTestVariants(test) {
89
102
  onError(err);
90
103
  }
91
104
  }
105
+ onCompleted();
92
106
  return iterations;
93
107
  }
94
108
  return next(0);
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-shadow */
2
2
  function createTestVariants(test) {
3
3
  return function testVariantsArgs(args) {
4
- return function testVariantsCall({ forceAwaitInterval, } = {}) {
4
+ return function testVariantsCall({ pauseInterval = 1000, pauseTime = 10, logInterval = 10000, logCompleted = true, } = {}) {
5
5
  const argsKeys = Object.keys(args);
6
6
  const argsValues = Object.values(args);
7
7
  const argsLength = argsKeys.length;
@@ -59,17 +59,23 @@ function createTestVariants(test) {
59
59
  }
60
60
  throw err;
61
61
  }
62
+ function onCompleted() {
63
+ if (logCompleted) {
64
+ console.log('variants: ' + iterations);
65
+ }
66
+ }
62
67
  let prevLogTime = Date.now();
63
68
  function next(value) {
64
- const now = forceAwaitInterval && Date.now();
69
+ const now = (logInterval || pauseInterval) && Date.now();
65
70
  if (now) {
66
- if (now - prevLogTime >= forceAwaitInterval) {
71
+ if (now - prevLogTime >= logInterval) {
72
+ // the log is required to prevent the karma browserNoActivityTimeout
67
73
  console.log(iterations);
68
74
  prevLogTime = now;
69
75
  }
70
76
  }
71
77
  iterations += typeof value === 'number' ? value : 1;
72
- const syncCallStartTime = now;
78
+ const syncCallStartTime = pauseInterval && now;
73
79
  while (debug || nextVariant()) {
74
80
  try {
75
81
  const promiseOrIterations = test(variantArgs);
@@ -78,8 +84,15 @@ function createTestVariants(test) {
78
84
  && typeof promiseOrIterations.then === 'function') {
79
85
  return promiseOrIterations.then(next).catch(onError);
80
86
  }
81
- if (syncCallStartTime && Date.now() - syncCallStartTime >= forceAwaitInterval) {
82
- return Promise.resolve(promiseOrIterations).then(next);
87
+ if (syncCallStartTime && Date.now() - syncCallStartTime >= pauseInterval) {
88
+ const pausePromise = pauseTime
89
+ ? new Promise(resolve => {
90
+ setTimeout(() => {
91
+ resolve(promiseOrIterations);
92
+ }, pauseTime);
93
+ })
94
+ : Promise.resolve(promiseOrIterations);
95
+ return pausePromise.then(next);
83
96
  }
84
97
  iterations += typeof promiseOrIterations === 'number' ? promiseOrIterations : 1;
85
98
  }
@@ -87,6 +100,7 @@ function createTestVariants(test) {
87
100
  onError(err);
88
101
  }
89
102
  }
103
+ onCompleted();
90
104
  return iterations;
91
105
  }
92
106
  return next(0);
@@ -7,7 +7,13 @@ declare type TestVariantsSetArgs<TArgs> = <TAdditionalArgs>(args: VariantsArgs<{
7
7
  [key in (keyof TAdditionalArgs | keyof TArgs)]: key extends keyof TArgs ? TArgs[key] : key extends keyof TAdditionalArgs ? TAdditionalArgs[key] : never;
8
8
  }>) => TestVariantsCall;
9
9
  export declare type TestVariantsCallParams = {
10
- forceAwaitInterval?: number;
10
+ /** pause test, required to prevent the karma browserDisconnectTimeout */
11
+ pauseInterval?: number;
12
+ pauseTime?: number;
13
+ /** console log current iterations, required to prevent the karma browserNoActivityTimeout */
14
+ logInterval?: number;
15
+ /** console log iterations on test completed */
16
+ logCompleted?: boolean;
11
17
  };
12
18
  export declare function createTestVariants<TArgs extends object>(test: (args: TArgs) => Promise<number | void> | number | void): TestVariantsSetArgs<TArgs>;
13
19
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemist/test-variants",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "Runs a test function with all possible combinations of its parameters.",
5
5
  "main": "dist/lib/index.cjs",
6
6
  "module": "dist/lib/index.mjs",