@fncts/test 0.0.1 → 0.0.4

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.
Files changed (90) hide show
  1. package/TestSpec.d.ts +4 -2
  2. package/_cjs/api.cjs +4 -4
  3. package/_cjs/control/Annotations/live.cjs +2 -2
  4. package/_cjs/control/Annotations.cjs +3 -3
  5. package/_cjs/control/Assertion/api.cjs +19 -8
  6. package/_cjs/control/Assertion/api.cjs.map +1 -1
  7. package/_cjs/control/Assertion/definition.cjs +1 -1
  8. package/_cjs/control/Assertion.cjs +2 -2
  9. package/_cjs/control/AssertionIO/api.cjs +1 -1
  10. package/_cjs/control/AssertionIO.cjs +2 -2
  11. package/_cjs/control/DefaultRunnableSpec.cjs +7 -1
  12. package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
  13. package/_cjs/control/DefaultTestReporter/render.cjs +5 -5
  14. package/_cjs/control/DefaultTestReporter.cjs +2 -2
  15. package/_cjs/control/FreeBooleanAlgebraIO.cjs +2 -2
  16. package/_cjs/control/Gen/api/conc.cjs +8 -6
  17. package/_cjs/control/Gen/api/conc.cjs.map +1 -1
  18. package/_cjs/control/Gen/api/double.cjs +2 -2
  19. package/_cjs/control/Gen/api/float.cjs +1 -1
  20. package/_cjs/control/Gen/api/string.cjs +1 -1
  21. package/_cjs/control/Gen/api.cjs +3 -3
  22. package/_cjs/control/Gen.cjs +10 -10
  23. package/_cjs/control/Live.cjs +1 -1
  24. package/_cjs/control/RunnableSpec.cjs +9 -5
  25. package/_cjs/control/RunnableSpec.cjs.map +1 -1
  26. package/_cjs/control/Sample/api.cjs +2 -2
  27. package/_cjs/control/Sample.cjs +2 -2
  28. package/_cjs/control/Sized/live.cjs +1 -1
  29. package/_cjs/control/Sized.cjs +3 -3
  30. package/_cjs/control/Spec/api.cjs +2 -2
  31. package/_cjs/control/Spec.cjs +2 -2
  32. package/_cjs/control/TestAnnotationRenderer/api.cjs +1 -1
  33. package/_cjs/control/TestAnnotationRenderer.cjs +2 -2
  34. package/_cjs/control/TestAspect/api.cjs +2 -2
  35. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  36. package/_cjs/control/TestAspect.cjs +2 -2
  37. package/_cjs/control/TestClock/definition.cjs +26 -24
  38. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  39. package/_cjs/control/TestClock.cjs +2 -2
  40. package/_cjs/control/TestConsole.cjs +2 -2
  41. package/_cjs/control/TestExecutor.cjs +2 -2
  42. package/_cjs/control/TestRandom.cjs +2 -2
  43. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +2 -2
  44. package/_cjs/data/AssertionData.cjs +1 -1
  45. package/_cjs/data/AssertionValue/api.cjs +1 -1
  46. package/_cjs/data/AssertionValue.cjs +2 -2
  47. package/_cjs/data/ExecutedSpec/api.cjs +1 -1
  48. package/_cjs/data/ExecutedSpec.cjs +2 -2
  49. package/_cjs/data/FreeBooleanAlgebra/api.cjs +11 -3
  50. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  51. package/_cjs/data/FreeBooleanAlgebra.cjs +2 -2
  52. package/_cjs/data/LogLine/Fragment.cjs +1 -1
  53. package/_cjs/data/LogLine/Line.cjs +1 -1
  54. package/_cjs/data/LogLine/api.cjs +1 -1
  55. package/_cjs/data/LogLine.cjs +2 -2
  56. package/_cjs/data/Render/api.cjs +1 -1
  57. package/_cjs/data/Render.cjs +2 -2
  58. package/_cjs/data/RenderParam/api.cjs +2 -2
  59. package/_cjs/data/RenderParam.cjs +2 -2
  60. package/_cjs/data/TestAnnotation/api.cjs +1 -1
  61. package/_cjs/data/TestAnnotation.cjs +2 -2
  62. package/_cjs/data/TestArgs.cjs +1 -1
  63. package/_cjs/demo.cjs +2 -2
  64. package/_mjs/control/Assertion/api.mjs +7 -1
  65. package/_mjs/control/Assertion/api.mjs.map +1 -1
  66. package/_mjs/control/DefaultRunnableSpec.mjs +2 -1
  67. package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
  68. package/_mjs/control/Gen/api/conc.mjs +8 -6
  69. package/_mjs/control/Gen/api/conc.mjs.map +1 -1
  70. package/_mjs/control/RunnableSpec.mjs +8 -5
  71. package/_mjs/control/RunnableSpec.mjs.map +1 -1
  72. package/_mjs/control/TestAspect/api.mjs +2 -2
  73. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  74. package/_mjs/control/TestClock/definition.mjs +25 -24
  75. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  76. package/_mjs/data/FreeBooleanAlgebra/api.mjs +10 -2
  77. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  78. package/_src/control/Assertion/api.ts +16 -1
  79. package/_src/control/DefaultRunnableSpec.ts +1 -1
  80. package/_src/control/Gen/api/conc.ts +8 -10
  81. package/_src/control/RunnableSpec.ts +7 -2
  82. package/_src/control/TestAspect/api.ts +5 -5
  83. package/_src/control/TestClock/definition.ts +6 -6
  84. package/_src/data/FreeBooleanAlgebra/api.ts +12 -6
  85. package/control/Assertion/api.d.ts +4 -0
  86. package/control/Gen/api/conc.d.ts +2 -2
  87. package/control/TestAspect/api.d.ts +2 -1
  88. package/control/TestClock/definition.d.ts +3 -1
  89. package/package.json +6 -6
  90. package/runTests.d.ts +1 -0
@@ -58,13 +58,13 @@ export class TestClock extends Clock {
58
58
  ) {
59
59
  super();
60
60
  }
61
- sleep = (ms: number) => {
61
+ sleep = (ms: Lazy<Duration>) => {
62
62
  const self = this;
63
63
  return IO.gen(function* (_) {
64
64
  const promise = yield* _(Future.make<never, void>());
65
65
  const wait = yield* _(
66
66
  self.clockState.modify((data) => {
67
- const end = data.duration + ms;
67
+ const end = data.duration + ms().milliseconds;
68
68
  if (end > data.duration) {
69
69
  return [true, new Data(data.duration, data.sleeps.prepend([end, promise]))];
70
70
  } else {
@@ -135,12 +135,12 @@ export class TestClock extends Clock {
135
135
  }
136
136
 
137
137
  private get delay(): UIO<void> {
138
- return this.live.provide(Clock.sleep(5));
138
+ return this.live.provide(Clock.sleep((5).milliseconds));
139
139
  }
140
140
 
141
141
  private get awaitSuspended(): UIO<void> {
142
142
  return this.suspended
143
- .zipWith(this.live.provide(Clock.sleep(10)) > this.suspended, Equatable.strictEquals)
143
+ .zipWith(this.live.provide(Clock.sleep((10).milliseconds)) > this.suspended, Equatable.strictEquals)
144
144
  .filterOrFail(Function.identity, (): void => undefined).eventually.asUnit;
145
145
  }
146
146
 
@@ -149,7 +149,7 @@ export class TestClock extends Clock {
149
149
  this.awaitSuspended >
150
150
  this.clockState.modify((data) => {
151
151
  const end = f(data.duration);
152
- const sorted = data.sleeps.sortWith(([x], [y]) => Number.Ord.compare_(x, y));
152
+ const sorted = data.sleeps.sortWith(([x], [y]) => Number.Ord.compare(x, y));
153
153
  return sorted.head
154
154
  .flatMap(([duration, promise]) =>
155
155
  duration <= end
@@ -188,7 +188,7 @@ export class TestClock extends Clock {
188
188
  matchTag(
189
189
  {
190
190
  Start: () =>
191
- Just(this.live.provide(Clock.sleep(5000) > Console.print(warning)).interruptible.fork.map(Pending)),
191
+ Just(this.live.provide(Clock.sleep((5).seconds) > Console.print(warning)).interruptible.fork.map(Pending)),
192
192
  },
193
193
  () => Nothing<IO<unknown, never, WarningData>>(),
194
194
  ),
@@ -34,22 +34,28 @@ export function failures<A>(self: FreeBooleanAlgebra<A>): Maybe<FreeBooleanAlgeb
34
34
  return self
35
35
  .fold<A, Either<FreeBooleanAlgebra<A>, FreeBooleanAlgebra<A>>>({
36
36
  Value: (a) => Either.right(FreeBooleanAlgebra.success(a)),
37
- And: (l, r) =>
38
- l.isRight()
37
+ And: (l, r) => {
38
+ Either.concrete(l);
39
+ Either.concrete(r);
40
+ return l.isRight()
39
41
  ? r.isRight()
40
42
  ? Either.right(l.right && r.right)
41
43
  : r
42
44
  : r.isRight()
43
45
  ? l
44
- : Either.left(l.left && r.left),
45
- Or: (l, r) =>
46
- l.isRight()
46
+ : Either.left(l.left && r.left);
47
+ },
48
+ Or: (l, r) => {
49
+ Either.concrete(l);
50
+ Either.concrete(r);
51
+ return l.isRight()
47
52
  ? r.isRight()
48
53
  ? Either.right(l.right || r.right)
49
54
  : l
50
55
  : r.isRight()
51
56
  ? r
52
- : Either.left(l.left || r.left),
57
+ : Either.left(l.left || r.left);
58
+ },
53
59
  Not: (v) => v.swap,
54
60
  })
55
61
  .match(Maybe.just, () => Nothing());
@@ -52,11 +52,15 @@ export declare function deepEqualTo<A>(expected: A): Assertion<A>;
52
52
  export declare function equals<A>(expected: A, E: Eq<A>): Assertion<A>;
53
53
  export declare const isFalse: Assertion<boolean>;
54
54
  export declare const isInterrupted: Assertion<Exit<any, any>>;
55
+ export declare const isOnlyInterrupted: Assertion<Exit<any, any>>;
55
56
  export declare function isLeft<A>(assertion: Assertion<A>): Assertion<Either<A, any>>;
56
57
  export declare function isJust<A>(assertion: Assertion<A>): Assertion<Maybe<A>>;
57
58
  export declare const isNothing: Assertion<Maybe<any>>;
58
59
  export declare function isRight<A>(assertion: Assertion<A>): Assertion<Either<any, A>>;
59
60
  export declare const isTrue: Assertion<boolean>;
61
+ export declare const isEmpty: Assertion<Iterable<any>>;
62
+ export declare const isUnit: Assertion<void>;
63
+ export declare function isLessThanOrEqualTo(n: number): Assertion<number>;
60
64
  /**
61
65
  * @tsplus fluent fncts.test.Assertion label
62
66
  * @tsplus location "@fncts/test/control/Assertion/api"
@@ -20,7 +20,7 @@ export declare function concN_<R, A>(g: Gen<R, A>, n: number): Gen<R, Conc<A>>;
20
20
  */
21
21
  export declare function uniqueConc_<R, A>(self: Gen<R, A>, constraints?: LengthConstraints & EqConstraint<A>): Gen<Has<Sized> & R, Conc<A>>;
22
22
  /**
23
- * @tsplus getter fncts.test.Gen uniqueConcN
23
+ * @tsplus fluent fncts.test.Gen uniqueConcN
24
24
  * @tsplus location "@fncts/test/control/Gen/api/conc"
25
25
  */
26
- export declare function uniqueConcN_<R, A>(self: Gen<R, A>): (E: Eq<A>) => (n: number) => Gen<R, Conc<A>>;
26
+ export declare function uniqueConcN_<R, A>(self: Gen<R, A>, n: number, /** @tsplus auto */ E: Eq<A>): Gen<R, Conc<A>>;
@@ -2,6 +2,7 @@ import { Has } from "@fncts/base/typeclass";
2
2
  import { IO } from "@fncts/io/IO";
3
3
  import { Schedule } from "@fncts/io/Schedule/definition";
4
4
  import { Environment } from "@fncts/base/data/Environment";
5
+ import { Duration } from "@fncts/base/data/Duration";
5
6
  import { Vector } from "@fncts/base/collection/immutable/Vector";
6
7
  import type { TestAspect } from "@fncts/test/control/TestAspect/definition";
7
8
  import type { TestSuccess } from "@fncts/test/data/TestSuccess";
@@ -20,4 +21,4 @@ export declare function before<R0>(effect: IO<R0, never, any>): TestAspect<R0, n
20
21
  export declare function beforeAll<R0, E0>(effect: IO<R0, E0, any>): TestAspect<R0, E0>;
21
22
  export declare const eventually: TestAspect<unknown, unknown>;
22
23
  export declare function repeat<R0>(schedule: Schedule<R0, TestSuccess, any>): TestAspect<R0 & Has<Annotations>, never>;
23
- export declare function timeoutWarning(duration: number): TestAspect<Has<Live>, any>;
24
+ export declare function timeoutWarning(duration: Duration): TestAspect<Has<Live>, any>;
@@ -3,6 +3,8 @@ import { Future } from "@fncts/io/Future";
3
3
  import { FiberId } from "@fncts/base/data/FiberId/definition";
4
4
  import { Fiber } from "@fncts/io/Fiber";
5
5
  import { Ref } from "@fncts/io/Ref";
6
+ import { Lazy } from "@fncts/base/data/function/definition";
7
+ import { Duration } from "@fncts/base/data/Duration";
6
8
  import { UIO, IO } from "@fncts/io/IO";
7
9
  import { HashSet } from "@fncts/base/collection/immutable/HashSet";
8
10
  import { HashMap } from "@fncts/base/collection/immutable/HashMap";
@@ -48,7 +50,7 @@ export declare class TestClock extends Clock {
48
50
  readonly annotations: Annotations;
49
51
  readonly warningState: Ref.Synchronized<WarningData>;
50
52
  constructor(clockState: Ref<Data>, live: Live, annotations: Annotations, warningState: Ref.Synchronized<WarningData>);
51
- sleep: (ms: number) => import("@fncts/io/IO").IO<unknown, never, void>;
53
+ sleep: (ms: Lazy<Duration>) => import("@fncts/io/IO").IO<unknown, never, void>;
52
54
  currentTime: import("@fncts/io/IO").IO<unknown, never, number>;
53
55
  adjust(duration: number): UIO<void>;
54
56
  setDate(date: Date): UIO<void>;
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@fncts/test",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "dependencies": {
5
- "@fncts/base": "0.0.1",
6
- "@fncts/io": "0.0.1",
7
- "@fncts/typelevel": "0.0.1"
5
+ "@fncts/base": "0.0.4",
6
+ "@fncts/io": "0.0.4",
7
+ "@fncts/typelevel": "0.0.4"
8
8
  },
9
9
  "exports": {
10
10
  "./*": {
11
- "import": "./_mjs/*",
12
- "require": "./_cjs/*"
11
+ "import": "./_mjs/*.mjs",
12
+ "require": "./_cjs/*.cjs"
13
13
  }
14
14
  },
15
15
  "publishConfig": {
package/runTests.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};