elm-pages 3.0.0-beta.8 → 3.0.0

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 (164) hide show
  1. package/README.md +11 -2
  2. package/adapter/netlify.js +207 -0
  3. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2730 -2938
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +16840 -13653
  13. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  14. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  15. package/generator/dead-code-review/elm.json +9 -7
  16. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +59 -10
  17. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +52 -36
  18. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  20. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  21. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  22. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  23. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  24. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  25. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  26. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  27. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
  28. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  29. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  30. package/generator/review/elm.json +10 -10
  31. package/generator/src/RouteBuilder.elm +93 -128
  32. package/generator/src/SharedTemplate.elm +8 -7
  33. package/generator/src/SiteConfig.elm +3 -2
  34. package/generator/src/basepath-middleware.js +3 -3
  35. package/generator/src/build.js +147 -63
  36. package/generator/src/cli.js +292 -88
  37. package/generator/src/codegen.js +29 -27
  38. package/generator/src/compatibility-key.js +3 -0
  39. package/generator/src/compile-elm.js +43 -26
  40. package/generator/src/config.js +2 -4
  41. package/generator/src/copy-dir.js +2 -2
  42. package/generator/src/dev-server.js +159 -92
  43. package/generator/src/dir-helpers.js +9 -26
  44. package/generator/src/elm-codegen.js +5 -4
  45. package/generator/src/elm-file-constants.js +2 -3
  46. package/generator/src/error-formatter.js +12 -11
  47. package/generator/src/file-helpers.js +3 -4
  48. package/generator/src/generate-template-module-connector.js +23 -23
  49. package/generator/src/init.js +9 -8
  50. package/generator/src/pre-render-html.js +10 -13
  51. package/generator/src/render-test.js +109 -0
  52. package/generator/src/render-worker.js +25 -28
  53. package/generator/src/render.js +321 -142
  54. package/generator/src/request-cache.js +265 -162
  55. package/generator/src/resolve-elm-module.js +64 -0
  56. package/generator/src/rewrite-client-elm-json.js +6 -5
  57. package/generator/src/rewrite-elm-json-help.js +56 -0
  58. package/generator/src/rewrite-elm-json.js +17 -7
  59. package/generator/src/route-codegen-helpers.js +16 -31
  60. package/generator/src/seo-renderer.js +12 -7
  61. package/generator/src/vite-utils.js +1 -2
  62. package/generator/static-code/elm-pages.js +10 -0
  63. package/generator/static-code/hmr.js +79 -13
  64. package/generator/template/app/Api.elm +3 -2
  65. package/generator/template/app/Effect.elm +155 -0
  66. package/generator/template/app/ErrorPage.elm +49 -6
  67. package/generator/template/app/Route/Blog/Slug_.elm +86 -0
  68. package/generator/template/app/Route/Greet.elm +107 -0
  69. package/generator/template/app/Route/Hello.elm +119 -0
  70. package/generator/template/app/Route/Index.elm +26 -25
  71. package/generator/template/app/Shared.elm +38 -39
  72. package/generator/template/app/Site.elm +4 -7
  73. package/generator/template/app/View.elm +9 -8
  74. package/generator/template/codegen/elm.codegen.json +18 -0
  75. package/generator/template/custom-backend-task.ts +3 -0
  76. package/generator/template/elm-pages.config.mjs +13 -0
  77. package/generator/template/elm-tooling.json +0 -3
  78. package/generator/template/elm.json +25 -20
  79. package/generator/template/index.ts +1 -2
  80. package/generator/template/netlify.toml +4 -1
  81. package/generator/template/package.json +10 -4
  82. package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
  83. package/generator/template/script/custom-backend-task.ts +3 -0
  84. package/generator/template/script/elm.json +61 -0
  85. package/generator/template/script/src/AddRoute.elm +312 -0
  86. package/generator/template/script/src/Stars.elm +42 -0
  87. package/package.json +30 -27
  88. package/src/ApiRoute.elm +249 -85
  89. package/src/BackendTask/Custom.elm +325 -0
  90. package/src/BackendTask/Env.elm +90 -0
  91. package/src/{DataSource → BackendTask}/File.elm +171 -56
  92. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  93. package/src/BackendTask/Http.elm +679 -0
  94. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  95. package/src/BackendTask/Internal/Request.elm +69 -0
  96. package/src/BackendTask/Random.elm +79 -0
  97. package/src/BackendTask/Time.elm +47 -0
  98. package/src/BackendTask.elm +531 -0
  99. package/src/FatalError.elm +90 -0
  100. package/src/FormData.elm +21 -18
  101. package/src/Head/Seo.elm +4 -4
  102. package/src/Head.elm +237 -7
  103. package/src/Internal/ApiRoute.elm +7 -5
  104. package/src/Internal/Request.elm +84 -4
  105. package/src/PageServerResponse.elm +6 -1
  106. package/src/Pages/ConcurrentSubmission.elm +127 -0
  107. package/src/Pages/Form.elm +340 -0
  108. package/src/Pages/FormData.elm +19 -0
  109. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  110. package/src/Pages/Internal/FatalError.elm +5 -0
  111. package/src/Pages/Internal/Msg.elm +93 -0
  112. package/src/Pages/Internal/NotFoundReason.elm +4 -4
  113. package/src/Pages/Internal/Platform/Cli.elm +629 -767
  114. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  115. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  116. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  117. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  118. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  119. package/src/Pages/Internal/Platform.elm +330 -203
  120. package/src/Pages/Internal/ResponseSketch.elm +2 -2
  121. package/src/Pages/Internal/Script.elm +17 -0
  122. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  123. package/src/Pages/Manifest.elm +52 -11
  124. package/src/Pages/Navigation.elm +85 -0
  125. package/src/Pages/PageUrl.elm +26 -12
  126. package/src/Pages/ProgramConfig.elm +32 -22
  127. package/src/Pages/Script.elm +166 -0
  128. package/src/Pages/SiteConfig.elm +3 -2
  129. package/src/Pages/StaticHttp/Request.elm +2 -2
  130. package/src/Pages/StaticHttpRequest.elm +23 -99
  131. package/src/Pages/Url.elm +3 -3
  132. package/src/PagesMsg.elm +88 -0
  133. package/src/QueryParams.elm +21 -172
  134. package/src/RenderRequest.elm +7 -7
  135. package/src/RequestsAndPending.elm +37 -20
  136. package/src/Result/Extra.elm +26 -0
  137. package/src/Scaffold/Form.elm +569 -0
  138. package/src/Scaffold/Route.elm +1431 -0
  139. package/src/Server/Request.elm +476 -1001
  140. package/src/Server/Response.elm +130 -36
  141. package/src/Server/Session.elm +181 -111
  142. package/src/Server/SetCookie.elm +80 -32
  143. package/src/Stub.elm +53 -0
  144. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  145. package/src/{Path.elm → UrlPath.elm} +33 -36
  146. package/generator/template/public/images/icon-png.png +0 -0
  147. package/src/DataSource/Env.elm +0 -38
  148. package/src/DataSource/Http.elm +0 -446
  149. package/src/DataSource/Internal/Request.elm +0 -20
  150. package/src/DataSource/Port.elm +0 -90
  151. package/src/DataSource.elm +0 -538
  152. package/src/Form/Field.elm +0 -717
  153. package/src/Form/FieldStatus.elm +0 -36
  154. package/src/Form/FieldView.elm +0 -417
  155. package/src/Form/FormData.elm +0 -22
  156. package/src/Form/Validation.elm +0 -391
  157. package/src/Form/Value.elm +0 -118
  158. package/src/Form.elm +0 -1683
  159. package/src/FormDecoder.elm +0 -102
  160. package/src/Pages/FormState.elm +0 -256
  161. package/src/Pages/Generate.elm +0 -1151
  162. package/src/Pages/Internal/Form.elm +0 -17
  163. package/src/Pages/Msg.elm +0 -79
  164. package/src/Pages/Transition.elm +0 -70
@@ -77,7 +77,7 @@ function A9(fun, a, b, c, d, e, f, g, h, i) {
77
77
  return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
78
78
  }
79
79
 
80
-
80
+ console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');
81
81
 
82
82
 
83
83
  var _JsArray_empty = [];
@@ -2988,8 +2988,8 @@ var $elm$core$String$replace = F3(
2988
2988
  });
2989
2989
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$onBegin = F2(
2990
2990
  function (_v0, testsCount) {
2991
- var fuzzRuns = _v0.fuzzRuns;
2992
2991
  var seed = _v0.seed;
2992
+ var fuzzRuns = _v0.fuzzRuns;
2993
2993
  return $elm$core$Maybe$Just(
2994
2994
  $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain(
2995
2995
  A3(
@@ -3137,10 +3137,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$yellow = $mpize
3137
3137
  {background: $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$Default, foreground: $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$Yellow, modifiers: _List_Nil, style: $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$Normal});
3138
3138
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$formatSummary = F2(
3139
3139
  function (kind, _v0) {
3140
- var todoCount = _v0.todoCount;
3141
- var failedCount = _v0.failedCount;
3142
- var passedCount = _v0.passedCount;
3143
3140
  var totalDuration = _v0.totalDuration;
3141
+ var passedCount = _v0.passedCount;
3142
+ var failedCount = _v0.failedCount;
3143
+ var todoCount = _v0.todoCount;
3144
3144
  var todoStats = (!todoCount) ? $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain('') : A2(
3145
3145
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$stat,
3146
3146
  'Todo: ',
@@ -3240,8 +3240,8 @@ var $elm$core$String$repeat = F2(
3240
3240
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$formatListingLine = F2(
3241
3241
  function (indentationLevel, testLine) {
3242
3242
  if (testLine.$ === 'Left') {
3243
- var label = testLine.a.label;
3244
3243
  var passed = testLine.a.passed;
3244
+ var label = testLine.a.label;
3245
3245
  return passed ? $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain(
3246
3246
  $elm$core$String$concat(
3247
3247
  _List_fromArray(
@@ -3280,8 +3280,8 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$Right = func
3280
3280
  };
3281
3281
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$listingTraversal = F4(
3282
3282
  function (f, initialLevel, _v0, acc) {
3283
- var groups = _v0.a.groups;
3284
3283
  var tests = _v0.a.tests;
3284
+ var groups = _v0.a.groups;
3285
3285
  var oneGroupTraversal = F2(
3286
3286
  function (_v1, subAcc) {
3287
3287
  var group = _v1.a;
@@ -3477,10 +3477,10 @@ var $elm$core$Maybe$withDefault = F2(
3477
3477
  });
3478
3478
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$insertTestInListing = F2(
3479
3479
  function (_v0, _v1) {
3480
- var labels = _v0.labels;
3481
3480
  var passed = _v0.passed;
3482
- var groups = _v1.a.groups;
3481
+ var labels = _v0.labels;
3483
3482
  var tests = _v1.a.tests;
3483
+ var groups = _v1.a.groups;
3484
3484
  if (!labels.b) {
3485
3485
  return $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$emptyListingTree;
3486
3486
  } else {
@@ -3570,17 +3570,17 @@ var $elm$core$List$isEmpty = function (xs) {
3570
3570
  };
3571
3571
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$accumStats = F2(
3572
3572
  function (result, _v0) {
3573
- var todoCount = _v0.todoCount;
3574
- var failedCount = _v0.failedCount;
3575
- var passedCount = _v0.passedCount;
3576
3573
  var totalDuration = _v0.totalDuration;
3574
+ var passedCount = _v0.passedCount;
3575
+ var failedCount = _v0.failedCount;
3576
+ var todoCount = _v0.todoCount;
3577
3577
  if (result.$ === 'Passed') {
3578
3578
  var duration = result.a.duration;
3579
3579
  return {failedCount: failedCount, passedCount: passedCount + 1, todoCount: todoCount, totalDuration: totalDuration + duration};
3580
3580
  } else {
3581
- var failures = result.a.failures;
3582
- var todos = result.a.todos;
3583
3581
  var duration = result.a.duration;
3582
+ var todos = result.a.todos;
3583
+ var failures = result.a.failures;
3584
3584
  var newTodoCount = $elm$core$List$isEmpty(todos) ? todoCount : (todoCount + 1);
3585
3585
  var newFailedCount = $elm$core$List$isEmpty(failures) ? failedCount : (failedCount + 1);
3586
3586
  return {failedCount: newFailedCount, passedCount: passedCount, todoCount: newTodoCount, totalDuration: totalDuration + duration};
@@ -3647,11 +3647,6 @@ var $elm$core$List$append = F2(
3647
3647
  var $elm$core$List$concat = function (lists) {
3648
3648
  return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);
3649
3649
  };
3650
- var $elm$core$Basics$composeL = F3(
3651
- function (g, f, x) {
3652
- return g(
3653
- f(x));
3654
- });
3655
3650
  var $elm$core$List$filter = F2(
3656
3651
  function (isGood, list) {
3657
3652
  return A3(
@@ -3663,153 +3658,1128 @@ var $elm$core$List$filter = F2(
3663
3658
  _List_Nil,
3664
3659
  list);
3665
3660
  });
3666
- var $elm$core$String$isEmpty = function (string) {
3667
- return string === '';
3668
- };
3669
- var $elm$core$Basics$not = _Basics_not;
3670
- var $elm_explorations$test$Test$Runner$formatLabels = F3(
3671
- function (formatDescription, formatTest, labels) {
3672
- var _v0 = A2(
3673
- $elm$core$List$filter,
3674
- A2($elm$core$Basics$composeL, $elm$core$Basics$not, $elm$core$String$isEmpty),
3675
- labels);
3676
- if (!_v0.b) {
3677
- return _List_Nil;
3678
- } else {
3679
- var test = _v0.a;
3680
- var descriptions = _v0.b;
3681
- return $elm$core$List$reverse(
3682
- A2(
3683
- $elm$core$List$cons,
3684
- formatTest(test),
3685
- A2($elm$core$List$map, formatDescription, descriptions)));
3686
- }
3687
- });
3661
+ var $elm_explorations$test$AsciiTable$AlignLeft = {$: 'AlignLeft'};
3662
+ var $elm_explorations$test$AsciiTable$AlignRight = {$: 'AlignRight'};
3663
+ var $elm_explorations$test$Test$Runner$Distribution$bars = 30;
3688
3664
  var $elm$core$String$cons = _String_cons;
3689
3665
  var $elm$core$String$fromChar = function (_char) {
3690
3666
  return A2($elm$core$String$cons, _char, '');
3691
3667
  };
3692
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar = F2(
3693
- function (icon, str) {
3694
- return $elm$core$String$fromChar(icon) + (' ' + (str + '\n'));
3695
- });
3696
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureLabelsToText = A2(
3697
- $elm$core$Basics$composeR,
3698
- A2(
3699
- $elm_explorations$test$Test$Runner$formatLabels,
3700
- A2(
3701
- $elm$core$Basics$composeL,
3702
- A2($elm$core$Basics$composeL, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain),
3703
- $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
3704
- _Utils_chr('↓'))),
3705
- A2(
3706
- $elm$core$Basics$composeL,
3707
- $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$red,
3708
- $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
3709
- _Utils_chr('✗')))),
3710
- $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat);
3711
- var $elm$core$Basics$always = F2(
3712
- function (a, _v0) {
3713
- return a;
3714
- });
3715
- var $elm$core$List$concatMap = F2(
3716
- function (f, list) {
3717
- return $elm$core$List$concat(
3718
- A2($elm$core$List$map, f, list));
3668
+ var $elm$core$String$length = _String_length;
3669
+ var $elm$core$String$padRight = F3(
3670
+ function (n, _char, string) {
3671
+ return _Utils_ap(
3672
+ string,
3673
+ A2(
3674
+ $elm$core$String$repeat,
3675
+ n - $elm$core$String$length(string),
3676
+ $elm$core$String$fromChar(_char)));
3677
+ });
3678
+ var $elm_explorations$test$Test$Runner$Distribution$barView = function (_v0) {
3679
+ var runsElapsed = _v0.runsElapsed;
3680
+ var count = _v0.count;
3681
+ var percentage = count / runsElapsed;
3682
+ var barsForPercentage = percentage * $elm_explorations$test$Test$Runner$Distribution$bars;
3683
+ var fullBars = $elm$core$Basics$round(barsForPercentage);
3684
+ return A3(
3685
+ $elm$core$String$padRight,
3686
+ $elm_explorations$test$Test$Runner$Distribution$bars,
3687
+ _Utils_chr('░'),
3688
+ A2($elm$core$String$repeat, fullBars, '█'));
3689
+ };
3690
+ var $elm$core$String$fromFloat = _String_fromNumber;
3691
+ var $elm$core$List$map3 = _List_map3;
3692
+ var $elm$core$List$maximum = function (list) {
3693
+ if (list.b) {
3694
+ var x = list.a;
3695
+ var xs = list.b;
3696
+ return $elm$core$Maybe$Just(
3697
+ A3($elm$core$List$foldl, $elm$core$Basics$max, x, xs));
3698
+ } else {
3699
+ return $elm$core$Maybe$Nothing;
3700
+ }
3701
+ };
3702
+ var $elm$core$String$padLeft = F3(
3703
+ function (n, _char, string) {
3704
+ return _Utils_ap(
3705
+ A2(
3706
+ $elm$core$String$repeat,
3707
+ n - $elm$core$String$length(string),
3708
+ $elm$core$String$fromChar(_char)),
3709
+ string);
3719
3710
  });
3720
- var $elm$core$Array$fromListHelp = F3(
3721
- function (list, nodeList, nodeListSize) {
3722
- fromListHelp:
3711
+ var $elm$core$List$repeatHelp = F3(
3712
+ function (result, n, value) {
3713
+ repeatHelp:
3723
3714
  while (true) {
3724
- var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, list);
3725
- var jsArray = _v0.a;
3726
- var remainingItems = _v0.b;
3727
- if (_Utils_cmp(
3728
- $elm$core$Elm$JsArray$length(jsArray),
3729
- $elm$core$Array$branchFactor) < 0) {
3730
- return A2(
3731
- $elm$core$Array$builderToArray,
3732
- true,
3733
- {nodeList: nodeList, nodeListSize: nodeListSize, tail: jsArray});
3715
+ if (n <= 0) {
3716
+ return result;
3734
3717
  } else {
3735
- var $temp$list = remainingItems,
3736
- $temp$nodeList = A2(
3737
- $elm$core$List$cons,
3738
- $elm$core$Array$Leaf(jsArray),
3739
- nodeList),
3740
- $temp$nodeListSize = nodeListSize + 1;
3741
- list = $temp$list;
3742
- nodeList = $temp$nodeList;
3743
- nodeListSize = $temp$nodeListSize;
3744
- continue fromListHelp;
3718
+ var $temp$result = A2($elm$core$List$cons, value, result),
3719
+ $temp$n = n - 1,
3720
+ $temp$value = value;
3721
+ result = $temp$result;
3722
+ n = $temp$n;
3723
+ value = $temp$value;
3724
+ continue repeatHelp;
3745
3725
  }
3746
3726
  }
3747
3727
  });
3748
- var $elm$core$Array$fromList = function (list) {
3749
- if (!list.b) {
3750
- return $elm$core$Array$empty;
3728
+ var $elm$core$List$repeat = F2(
3729
+ function (n, value) {
3730
+ return A3($elm$core$List$repeatHelp, _List_Nil, n, value);
3731
+ });
3732
+ var $elm_explorations$test$MicroListExtra$rowsLength = function (listOfLists) {
3733
+ if (!listOfLists.b) {
3734
+ return 0;
3751
3735
  } else {
3752
- return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0);
3736
+ var x = listOfLists.a;
3737
+ return $elm$core$List$length(x);
3753
3738
  }
3754
3739
  };
3755
- var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy;
3756
- var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep);
3757
- var $elm$core$Basics$ge = _Utils_ge;
3758
- var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet;
3759
- var $elm$core$Array$getHelp = F3(
3760
- function (shift, index, tree) {
3761
- getHelp:
3740
+ var $elm_explorations$test$MicroListExtra$transpose = function (listOfLists) {
3741
+ return A3(
3742
+ $elm$core$List$foldr,
3743
+ $elm$core$List$map2($elm$core$List$cons),
3744
+ A2(
3745
+ $elm$core$List$repeat,
3746
+ $elm_explorations$test$MicroListExtra$rowsLength(listOfLists),
3747
+ _List_Nil),
3748
+ listOfLists);
3749
+ };
3750
+ var $elm_explorations$test$AsciiTable$view = F2(
3751
+ function (columns, items) {
3752
+ var padFn = F3(
3753
+ function (length, align, string) {
3754
+ if (align.$ === 'AlignLeft') {
3755
+ return A3(
3756
+ $elm$core$String$padRight,
3757
+ length,
3758
+ _Utils_chr(' '),
3759
+ string);
3760
+ } else {
3761
+ return A3(
3762
+ $elm$core$String$padLeft,
3763
+ length,
3764
+ _Utils_chr(' '),
3765
+ string);
3766
+ }
3767
+ });
3768
+ var columnData = A2(
3769
+ $elm$core$List$map,
3770
+ function (col) {
3771
+ return A2($elm$core$List$map, col.toString, items);
3772
+ },
3773
+ columns);
3774
+ var columnLengths = A2(
3775
+ $elm$core$List$map,
3776
+ function (colRows) {
3777
+ return A2(
3778
+ $elm$core$Maybe$withDefault,
3779
+ 0,
3780
+ $elm$core$List$maximum(
3781
+ A2($elm$core$List$map, $elm$core$String$length, colRows)));
3782
+ },
3783
+ columnData);
3784
+ var paddedColumnData = A4(
3785
+ $elm$core$List$map3,
3786
+ F3(
3787
+ function (col, colLength, colStrings) {
3788
+ return A2(
3789
+ $elm$core$List$map,
3790
+ A2(padFn, colLength, col.align),
3791
+ colStrings);
3792
+ }),
3793
+ columns,
3794
+ columnLengths,
3795
+ columnData);
3796
+ return A3(
3797
+ $elm$core$List$map2,
3798
+ F2(
3799
+ function (item, rowCells) {
3800
+ return {
3801
+ item: item,
3802
+ renderedRow: A2($elm$core$String$join, ' ', rowCells)
3803
+ };
3804
+ }),
3805
+ items,
3806
+ $elm_explorations$test$MicroListExtra$transpose(paddedColumnData));
3807
+ });
3808
+ var $elm_explorations$test$Test$Runner$Distribution$viewLabels = function (labels) {
3809
+ return $elm$core$List$isEmpty(labels) ? '<uncategorized>' : A2($elm$core$String$join, ', ', labels);
3810
+ };
3811
+ var $elm_explorations$test$Test$Runner$Distribution$formatAsciiTable = F2(
3812
+ function (runsElapsed, items) {
3813
+ return A2(
3814
+ $elm_explorations$test$AsciiTable$view,
3815
+ _List_fromArray(
3816
+ [
3817
+ {
3818
+ align: $elm_explorations$test$AsciiTable$AlignLeft,
3819
+ toString: function (_v0) {
3820
+ var labels = _v0.a;
3821
+ return ' ' + ($elm_explorations$test$Test$Runner$Distribution$viewLabels(labels) + ':');
3822
+ }
3823
+ },
3824
+ {
3825
+ align: $elm_explorations$test$AsciiTable$AlignRight,
3826
+ toString: function (_v1) {
3827
+ var percentage = _v1.c;
3828
+ return $elm$core$String$fromFloat(percentage) + '%';
3829
+ }
3830
+ },
3831
+ {
3832
+ align: $elm_explorations$test$AsciiTable$AlignRight,
3833
+ toString: function (_v2) {
3834
+ var count = _v2.b;
3835
+ return '(' + ($elm$core$String$fromInt(count) + 'x)');
3836
+ }
3837
+ },
3838
+ {
3839
+ align: $elm_explorations$test$AsciiTable$AlignLeft,
3840
+ toString: function (_v3) {
3841
+ var count = _v3.b;
3842
+ return $elm_explorations$test$Test$Runner$Distribution$barView(
3843
+ {count: count, runsElapsed: runsElapsed});
3844
+ }
3845
+ }
3846
+ ]),
3847
+ items);
3848
+ });
3849
+ var $elm$core$List$any = F2(
3850
+ function (isOkay, list) {
3851
+ any:
3762
3852
  while (true) {
3763
- var pos = $elm$core$Array$bitMask & (index >>> shift);
3764
- var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree);
3765
- if (_v0.$ === 'SubTree') {
3766
- var subTree = _v0.a;
3767
- var $temp$shift = shift - $elm$core$Array$shiftStep,
3768
- $temp$index = index,
3769
- $temp$tree = subTree;
3770
- shift = $temp$shift;
3771
- index = $temp$index;
3772
- tree = $temp$tree;
3773
- continue getHelp;
3853
+ if (!list.b) {
3854
+ return false;
3774
3855
  } else {
3775
- var values = _v0.a;
3776
- return A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, values);
3856
+ var x = list.a;
3857
+ var xs = list.b;
3858
+ if (isOkay(x)) {
3859
+ return true;
3860
+ } else {
3861
+ var $temp$isOkay = isOkay,
3862
+ $temp$list = xs;
3863
+ isOkay = $temp$isOkay;
3864
+ list = $temp$list;
3865
+ continue any;
3866
+ }
3777
3867
  }
3778
3868
  }
3779
3869
  });
3780
- var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy;
3781
- var $elm$core$Array$tailIndex = function (len) {
3782
- return (len >>> 5) << 5;
3870
+ var $elm$core$Set$Set_elm_builtin = function (a) {
3871
+ return {$: 'Set_elm_builtin', a: a};
3783
3872
  };
3784
- var $elm$core$Array$get = F2(
3785
- function (index, _v0) {
3786
- var len = _v0.a;
3787
- var startShift = _v0.b;
3788
- var tree = _v0.c;
3789
- var tail = _v0.d;
3790
- return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? $elm$core$Maybe$Nothing : ((_Utils_cmp(
3791
- index,
3792
- $elm$core$Array$tailIndex(len)) > -1) ? $elm$core$Maybe$Just(
3793
- A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just(
3794
- A3($elm$core$Array$getHelp, startShift, index, tree)));
3873
+ var $elm$core$Dict$foldl = F3(
3874
+ function (func, acc, dict) {
3875
+ foldl:
3876
+ while (true) {
3877
+ if (dict.$ === 'RBEmpty_elm_builtin') {
3878
+ return acc;
3879
+ } else {
3880
+ var key = dict.b;
3881
+ var value = dict.c;
3882
+ var left = dict.d;
3883
+ var right = dict.e;
3884
+ var $temp$func = func,
3885
+ $temp$acc = A3(
3886
+ func,
3887
+ key,
3888
+ value,
3889
+ A3($elm$core$Dict$foldl, func, acc, left)),
3890
+ $temp$dict = right;
3891
+ func = $temp$func;
3892
+ acc = $temp$acc;
3893
+ dict = $temp$dict;
3894
+ continue foldl;
3895
+ }
3896
+ }
3795
3897
  });
3796
- var $elm$core$Array$length = function (_v0) {
3797
- var len = _v0.a;
3798
- return len;
3799
- };
3800
- var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$Added = function (a) {
3801
- return {$: 'Added', a: a};
3802
- };
3803
- var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$CannotGetA = function (a) {
3804
- return {$: 'CannotGetA', a: a};
3805
- };
3806
- var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$CannotGetB = function (a) {
3807
- return {$: 'CannotGetB', a: a};
3898
+ var $elm$core$Dict$getMin = function (dict) {
3899
+ getMin:
3900
+ while (true) {
3901
+ if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
3902
+ var left = dict.d;
3903
+ var $temp$dict = left;
3904
+ dict = $temp$dict;
3905
+ continue getMin;
3906
+ } else {
3907
+ return dict;
3908
+ }
3909
+ }
3808
3910
  };
3809
- var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$NoChange = function (a) {
3810
- return {$: 'NoChange', a: a};
3911
+ var $elm$core$Dict$moveRedLeft = function (dict) {
3912
+ if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
3913
+ if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {
3914
+ var clr = dict.a;
3915
+ var k = dict.b;
3916
+ var v = dict.c;
3917
+ var _v1 = dict.d;
3918
+ var lClr = _v1.a;
3919
+ var lK = _v1.b;
3920
+ var lV = _v1.c;
3921
+ var lLeft = _v1.d;
3922
+ var lRight = _v1.e;
3923
+ var _v2 = dict.e;
3924
+ var rClr = _v2.a;
3925
+ var rK = _v2.b;
3926
+ var rV = _v2.c;
3927
+ var rLeft = _v2.d;
3928
+ var _v3 = rLeft.a;
3929
+ var rlK = rLeft.b;
3930
+ var rlV = rLeft.c;
3931
+ var rlL = rLeft.d;
3932
+ var rlR = rLeft.e;
3933
+ var rRight = _v2.e;
3934
+ return A5(
3935
+ $elm$core$Dict$RBNode_elm_builtin,
3936
+ $elm$core$Dict$Red,
3937
+ rlK,
3938
+ rlV,
3939
+ A5(
3940
+ $elm$core$Dict$RBNode_elm_builtin,
3941
+ $elm$core$Dict$Black,
3942
+ k,
3943
+ v,
3944
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
3945
+ rlL),
3946
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));
3947
+ } else {
3948
+ var clr = dict.a;
3949
+ var k = dict.b;
3950
+ var v = dict.c;
3951
+ var _v4 = dict.d;
3952
+ var lClr = _v4.a;
3953
+ var lK = _v4.b;
3954
+ var lV = _v4.c;
3955
+ var lLeft = _v4.d;
3956
+ var lRight = _v4.e;
3957
+ var _v5 = dict.e;
3958
+ var rClr = _v5.a;
3959
+ var rK = _v5.b;
3960
+ var rV = _v5.c;
3961
+ var rLeft = _v5.d;
3962
+ var rRight = _v5.e;
3963
+ if (clr.$ === 'Black') {
3964
+ return A5(
3965
+ $elm$core$Dict$RBNode_elm_builtin,
3966
+ $elm$core$Dict$Black,
3967
+ k,
3968
+ v,
3969
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
3970
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
3971
+ } else {
3972
+ return A5(
3973
+ $elm$core$Dict$RBNode_elm_builtin,
3974
+ $elm$core$Dict$Black,
3975
+ k,
3976
+ v,
3977
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
3978
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
3979
+ }
3980
+ }
3981
+ } else {
3982
+ return dict;
3983
+ }
3811
3984
  };
3812
- var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$Removed = function (a) {
3985
+ var $elm$core$Dict$moveRedRight = function (dict) {
3986
+ if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
3987
+ if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {
3988
+ var clr = dict.a;
3989
+ var k = dict.b;
3990
+ var v = dict.c;
3991
+ var _v1 = dict.d;
3992
+ var lClr = _v1.a;
3993
+ var lK = _v1.b;
3994
+ var lV = _v1.c;
3995
+ var _v2 = _v1.d;
3996
+ var _v3 = _v2.a;
3997
+ var llK = _v2.b;
3998
+ var llV = _v2.c;
3999
+ var llLeft = _v2.d;
4000
+ var llRight = _v2.e;
4001
+ var lRight = _v1.e;
4002
+ var _v4 = dict.e;
4003
+ var rClr = _v4.a;
4004
+ var rK = _v4.b;
4005
+ var rV = _v4.c;
4006
+ var rLeft = _v4.d;
4007
+ var rRight = _v4.e;
4008
+ return A5(
4009
+ $elm$core$Dict$RBNode_elm_builtin,
4010
+ $elm$core$Dict$Red,
4011
+ lK,
4012
+ lV,
4013
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
4014
+ A5(
4015
+ $elm$core$Dict$RBNode_elm_builtin,
4016
+ $elm$core$Dict$Black,
4017
+ k,
4018
+ v,
4019
+ lRight,
4020
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));
4021
+ } else {
4022
+ var clr = dict.a;
4023
+ var k = dict.b;
4024
+ var v = dict.c;
4025
+ var _v5 = dict.d;
4026
+ var lClr = _v5.a;
4027
+ var lK = _v5.b;
4028
+ var lV = _v5.c;
4029
+ var lLeft = _v5.d;
4030
+ var lRight = _v5.e;
4031
+ var _v6 = dict.e;
4032
+ var rClr = _v6.a;
4033
+ var rK = _v6.b;
4034
+ var rV = _v6.c;
4035
+ var rLeft = _v6.d;
4036
+ var rRight = _v6.e;
4037
+ if (clr.$ === 'Black') {
4038
+ return A5(
4039
+ $elm$core$Dict$RBNode_elm_builtin,
4040
+ $elm$core$Dict$Black,
4041
+ k,
4042
+ v,
4043
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
4044
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
4045
+ } else {
4046
+ return A5(
4047
+ $elm$core$Dict$RBNode_elm_builtin,
4048
+ $elm$core$Dict$Black,
4049
+ k,
4050
+ v,
4051
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
4052
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
4053
+ }
4054
+ }
4055
+ } else {
4056
+ return dict;
4057
+ }
4058
+ };
4059
+ var $elm$core$Dict$removeHelpPrepEQGT = F7(
4060
+ function (targetKey, dict, color, key, value, left, right) {
4061
+ if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
4062
+ var _v1 = left.a;
4063
+ var lK = left.b;
4064
+ var lV = left.c;
4065
+ var lLeft = left.d;
4066
+ var lRight = left.e;
4067
+ return A5(
4068
+ $elm$core$Dict$RBNode_elm_builtin,
4069
+ color,
4070
+ lK,
4071
+ lV,
4072
+ lLeft,
4073
+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));
4074
+ } else {
4075
+ _v2$2:
4076
+ while (true) {
4077
+ if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {
4078
+ if (right.d.$ === 'RBNode_elm_builtin') {
4079
+ if (right.d.a.$ === 'Black') {
4080
+ var _v3 = right.a;
4081
+ var _v4 = right.d;
4082
+ var _v5 = _v4.a;
4083
+ return $elm$core$Dict$moveRedRight(dict);
4084
+ } else {
4085
+ break _v2$2;
4086
+ }
4087
+ } else {
4088
+ var _v6 = right.a;
4089
+ var _v7 = right.d;
4090
+ return $elm$core$Dict$moveRedRight(dict);
4091
+ }
4092
+ } else {
4093
+ break _v2$2;
4094
+ }
4095
+ }
4096
+ return dict;
4097
+ }
4098
+ });
4099
+ var $elm$core$Dict$removeMin = function (dict) {
4100
+ if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
4101
+ var color = dict.a;
4102
+ var key = dict.b;
4103
+ var value = dict.c;
4104
+ var left = dict.d;
4105
+ var lColor = left.a;
4106
+ var lLeft = left.d;
4107
+ var right = dict.e;
4108
+ if (lColor.$ === 'Black') {
4109
+ if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
4110
+ var _v3 = lLeft.a;
4111
+ return A5(
4112
+ $elm$core$Dict$RBNode_elm_builtin,
4113
+ color,
4114
+ key,
4115
+ value,
4116
+ $elm$core$Dict$removeMin(left),
4117
+ right);
4118
+ } else {
4119
+ var _v4 = $elm$core$Dict$moveRedLeft(dict);
4120
+ if (_v4.$ === 'RBNode_elm_builtin') {
4121
+ var nColor = _v4.a;
4122
+ var nKey = _v4.b;
4123
+ var nValue = _v4.c;
4124
+ var nLeft = _v4.d;
4125
+ var nRight = _v4.e;
4126
+ return A5(
4127
+ $elm$core$Dict$balance,
4128
+ nColor,
4129
+ nKey,
4130
+ nValue,
4131
+ $elm$core$Dict$removeMin(nLeft),
4132
+ nRight);
4133
+ } else {
4134
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4135
+ }
4136
+ }
4137
+ } else {
4138
+ return A5(
4139
+ $elm$core$Dict$RBNode_elm_builtin,
4140
+ color,
4141
+ key,
4142
+ value,
4143
+ $elm$core$Dict$removeMin(left),
4144
+ right);
4145
+ }
4146
+ } else {
4147
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4148
+ }
4149
+ };
4150
+ var $elm$core$Dict$removeHelp = F2(
4151
+ function (targetKey, dict) {
4152
+ if (dict.$ === 'RBEmpty_elm_builtin') {
4153
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4154
+ } else {
4155
+ var color = dict.a;
4156
+ var key = dict.b;
4157
+ var value = dict.c;
4158
+ var left = dict.d;
4159
+ var right = dict.e;
4160
+ if (_Utils_cmp(targetKey, key) < 0) {
4161
+ if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {
4162
+ var _v4 = left.a;
4163
+ var lLeft = left.d;
4164
+ if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
4165
+ var _v6 = lLeft.a;
4166
+ return A5(
4167
+ $elm$core$Dict$RBNode_elm_builtin,
4168
+ color,
4169
+ key,
4170
+ value,
4171
+ A2($elm$core$Dict$removeHelp, targetKey, left),
4172
+ right);
4173
+ } else {
4174
+ var _v7 = $elm$core$Dict$moveRedLeft(dict);
4175
+ if (_v7.$ === 'RBNode_elm_builtin') {
4176
+ var nColor = _v7.a;
4177
+ var nKey = _v7.b;
4178
+ var nValue = _v7.c;
4179
+ var nLeft = _v7.d;
4180
+ var nRight = _v7.e;
4181
+ return A5(
4182
+ $elm$core$Dict$balance,
4183
+ nColor,
4184
+ nKey,
4185
+ nValue,
4186
+ A2($elm$core$Dict$removeHelp, targetKey, nLeft),
4187
+ nRight);
4188
+ } else {
4189
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4190
+ }
4191
+ }
4192
+ } else {
4193
+ return A5(
4194
+ $elm$core$Dict$RBNode_elm_builtin,
4195
+ color,
4196
+ key,
4197
+ value,
4198
+ A2($elm$core$Dict$removeHelp, targetKey, left),
4199
+ right);
4200
+ }
4201
+ } else {
4202
+ return A2(
4203
+ $elm$core$Dict$removeHelpEQGT,
4204
+ targetKey,
4205
+ A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));
4206
+ }
4207
+ }
4208
+ });
4209
+ var $elm$core$Dict$removeHelpEQGT = F2(
4210
+ function (targetKey, dict) {
4211
+ if (dict.$ === 'RBNode_elm_builtin') {
4212
+ var color = dict.a;
4213
+ var key = dict.b;
4214
+ var value = dict.c;
4215
+ var left = dict.d;
4216
+ var right = dict.e;
4217
+ if (_Utils_eq(targetKey, key)) {
4218
+ var _v1 = $elm$core$Dict$getMin(right);
4219
+ if (_v1.$ === 'RBNode_elm_builtin') {
4220
+ var minKey = _v1.b;
4221
+ var minValue = _v1.c;
4222
+ return A5(
4223
+ $elm$core$Dict$balance,
4224
+ color,
4225
+ minKey,
4226
+ minValue,
4227
+ left,
4228
+ $elm$core$Dict$removeMin(right));
4229
+ } else {
4230
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4231
+ }
4232
+ } else {
4233
+ return A5(
4234
+ $elm$core$Dict$balance,
4235
+ color,
4236
+ key,
4237
+ value,
4238
+ left,
4239
+ A2($elm$core$Dict$removeHelp, targetKey, right));
4240
+ }
4241
+ } else {
4242
+ return $elm$core$Dict$RBEmpty_elm_builtin;
4243
+ }
4244
+ });
4245
+ var $elm$core$Dict$remove = F2(
4246
+ function (key, dict) {
4247
+ var _v0 = A2($elm$core$Dict$removeHelp, key, dict);
4248
+ if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
4249
+ var _v1 = _v0.a;
4250
+ var k = _v0.b;
4251
+ var v = _v0.c;
4252
+ var l = _v0.d;
4253
+ var r = _v0.e;
4254
+ return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
4255
+ } else {
4256
+ var x = _v0;
4257
+ return x;
4258
+ }
4259
+ });
4260
+ var $elm$core$Dict$diff = F2(
4261
+ function (t1, t2) {
4262
+ return A3(
4263
+ $elm$core$Dict$foldl,
4264
+ F3(
4265
+ function (k, v, t) {
4266
+ return A2($elm$core$Dict$remove, k, t);
4267
+ }),
4268
+ t1,
4269
+ t2);
4270
+ });
4271
+ var $elm$core$Set$diff = F2(
4272
+ function (_v0, _v1) {
4273
+ var dict1 = _v0.a;
4274
+ var dict2 = _v1.a;
4275
+ return $elm$core$Set$Set_elm_builtin(
4276
+ A2($elm$core$Dict$diff, dict1, dict2));
4277
+ });
4278
+ var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty);
4279
+ var $elm$core$Set$insert = F2(
4280
+ function (key, _v0) {
4281
+ var dict = _v0.a;
4282
+ return $elm$core$Set$Set_elm_builtin(
4283
+ A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict));
4284
+ });
4285
+ var $elm$core$Set$fromList = function (list) {
4286
+ return A3($elm$core$List$foldl, $elm$core$Set$insert, $elm$core$Set$empty, list);
4287
+ };
4288
+ var $elm$core$Dict$isEmpty = function (dict) {
4289
+ if (dict.$ === 'RBEmpty_elm_builtin') {
4290
+ return true;
4291
+ } else {
4292
+ return false;
4293
+ }
4294
+ };
4295
+ var $elm$core$Set$isEmpty = function (_v0) {
4296
+ var dict = _v0.a;
4297
+ return $elm$core$Dict$isEmpty(dict);
4298
+ };
4299
+ var $elm$core$Basics$not = _Basics_not;
4300
+ var $elm_explorations$test$Test$Runner$Distribution$isStrictSubset = F2(
4301
+ function (all, combination) {
4302
+ var combinationSet = $elm$core$Set$fromList(combination);
4303
+ var containsCombinationFully = function (set) {
4304
+ return (!$elm$core$Set$isEmpty(
4305
+ A2($elm$core$Set$diff, set, combinationSet))) && $elm$core$Set$isEmpty(
4306
+ A2($elm$core$Set$diff, combinationSet, set));
4307
+ };
4308
+ var allSets = A2(
4309
+ $elm$core$List$map,
4310
+ A2($elm$core$Basics$composeR, $elm$core$Tuple$first, $elm$core$Set$fromList),
4311
+ all);
4312
+ return A2($elm$core$List$any, containsCombinationFully, allSets);
4313
+ });
4314
+ var $elm$core$Basics$negate = function (n) {
4315
+ return -n;
4316
+ };
4317
+ var $elm$core$List$partition = F2(
4318
+ function (pred, list) {
4319
+ var step = F2(
4320
+ function (x, _v0) {
4321
+ var trues = _v0.a;
4322
+ var falses = _v0.b;
4323
+ return pred(x) ? _Utils_Tuple2(
4324
+ A2($elm$core$List$cons, x, trues),
4325
+ falses) : _Utils_Tuple2(
4326
+ trues,
4327
+ A2($elm$core$List$cons, x, falses));
4328
+ });
4329
+ return A3(
4330
+ $elm$core$List$foldr,
4331
+ step,
4332
+ _Utils_Tuple2(_List_Nil, _List_Nil),
4333
+ list);
4334
+ });
4335
+ var $elm$core$List$sortBy = _List_sortBy;
4336
+ var $elm_explorations$test$MicroListExtra$findIndexHelp = F3(
4337
+ function (index, predicate, list) {
4338
+ findIndexHelp:
4339
+ while (true) {
4340
+ if (!list.b) {
4341
+ return $elm$core$Maybe$Nothing;
4342
+ } else {
4343
+ var x = list.a;
4344
+ var xs = list.b;
4345
+ if (predicate(x)) {
4346
+ return $elm$core$Maybe$Just(index);
4347
+ } else {
4348
+ var $temp$index = index + 1,
4349
+ $temp$predicate = predicate,
4350
+ $temp$list = xs;
4351
+ index = $temp$index;
4352
+ predicate = $temp$predicate;
4353
+ list = $temp$list;
4354
+ continue findIndexHelp;
4355
+ }
4356
+ }
4357
+ }
4358
+ });
4359
+ var $elm_explorations$test$MicroListExtra$findIndex = $elm_explorations$test$MicroListExtra$findIndexHelp(0);
4360
+ var $elm$core$List$drop = F2(
4361
+ function (n, list) {
4362
+ drop:
4363
+ while (true) {
4364
+ if (n <= 0) {
4365
+ return list;
4366
+ } else {
4367
+ if (!list.b) {
4368
+ return list;
4369
+ } else {
4370
+ var x = list.a;
4371
+ var xs = list.b;
4372
+ var $temp$n = n - 1,
4373
+ $temp$list = xs;
4374
+ n = $temp$n;
4375
+ list = $temp$list;
4376
+ continue drop;
4377
+ }
4378
+ }
4379
+ }
4380
+ });
4381
+ var $elm$core$List$takeReverse = F3(
4382
+ function (n, list, kept) {
4383
+ takeReverse:
4384
+ while (true) {
4385
+ if (n <= 0) {
4386
+ return kept;
4387
+ } else {
4388
+ if (!list.b) {
4389
+ return kept;
4390
+ } else {
4391
+ var x = list.a;
4392
+ var xs = list.b;
4393
+ var $temp$n = n - 1,
4394
+ $temp$list = xs,
4395
+ $temp$kept = A2($elm$core$List$cons, x, kept);
4396
+ n = $temp$n;
4397
+ list = $temp$list;
4398
+ kept = $temp$kept;
4399
+ continue takeReverse;
4400
+ }
4401
+ }
4402
+ }
4403
+ });
4404
+ var $elm$core$List$takeTailRec = F2(
4405
+ function (n, list) {
4406
+ return $elm$core$List$reverse(
4407
+ A3($elm$core$List$takeReverse, n, list, _List_Nil));
4408
+ });
4409
+ var $elm$core$List$takeFast = F3(
4410
+ function (ctr, n, list) {
4411
+ if (n <= 0) {
4412
+ return _List_Nil;
4413
+ } else {
4414
+ var _v0 = _Utils_Tuple2(n, list);
4415
+ _v0$1:
4416
+ while (true) {
4417
+ _v0$5:
4418
+ while (true) {
4419
+ if (!_v0.b.b) {
4420
+ return list;
4421
+ } else {
4422
+ if (_v0.b.b.b) {
4423
+ switch (_v0.a) {
4424
+ case 1:
4425
+ break _v0$1;
4426
+ case 2:
4427
+ var _v2 = _v0.b;
4428
+ var x = _v2.a;
4429
+ var _v3 = _v2.b;
4430
+ var y = _v3.a;
4431
+ return _List_fromArray(
4432
+ [x, y]);
4433
+ case 3:
4434
+ if (_v0.b.b.b.b) {
4435
+ var _v4 = _v0.b;
4436
+ var x = _v4.a;
4437
+ var _v5 = _v4.b;
4438
+ var y = _v5.a;
4439
+ var _v6 = _v5.b;
4440
+ var z = _v6.a;
4441
+ return _List_fromArray(
4442
+ [x, y, z]);
4443
+ } else {
4444
+ break _v0$5;
4445
+ }
4446
+ default:
4447
+ if (_v0.b.b.b.b && _v0.b.b.b.b.b) {
4448
+ var _v7 = _v0.b;
4449
+ var x = _v7.a;
4450
+ var _v8 = _v7.b;
4451
+ var y = _v8.a;
4452
+ var _v9 = _v8.b;
4453
+ var z = _v9.a;
4454
+ var _v10 = _v9.b;
4455
+ var w = _v10.a;
4456
+ var tl = _v10.b;
4457
+ return (ctr > 1000) ? A2(
4458
+ $elm$core$List$cons,
4459
+ x,
4460
+ A2(
4461
+ $elm$core$List$cons,
4462
+ y,
4463
+ A2(
4464
+ $elm$core$List$cons,
4465
+ z,
4466
+ A2(
4467
+ $elm$core$List$cons,
4468
+ w,
4469
+ A2($elm$core$List$takeTailRec, n - 4, tl))))) : A2(
4470
+ $elm$core$List$cons,
4471
+ x,
4472
+ A2(
4473
+ $elm$core$List$cons,
4474
+ y,
4475
+ A2(
4476
+ $elm$core$List$cons,
4477
+ z,
4478
+ A2(
4479
+ $elm$core$List$cons,
4480
+ w,
4481
+ A3($elm$core$List$takeFast, ctr + 1, n - 4, tl)))));
4482
+ } else {
4483
+ break _v0$5;
4484
+ }
4485
+ }
4486
+ } else {
4487
+ if (_v0.a === 1) {
4488
+ break _v0$1;
4489
+ } else {
4490
+ break _v0$5;
4491
+ }
4492
+ }
4493
+ }
4494
+ }
4495
+ return list;
4496
+ }
4497
+ var _v1 = _v0.b;
4498
+ var x = _v1.a;
4499
+ return _List_fromArray(
4500
+ [x]);
4501
+ }
4502
+ });
4503
+ var $elm$core$List$take = F2(
4504
+ function (n, list) {
4505
+ return A3($elm$core$List$takeFast, 0, n, list);
4506
+ });
4507
+ var $elm_explorations$test$MicroListExtra$splitAt = F2(
4508
+ function (n, xs) {
4509
+ return _Utils_Tuple2(
4510
+ A2($elm$core$List$take, n, xs),
4511
+ A2($elm$core$List$drop, n, xs));
4512
+ });
4513
+ var $elm_explorations$test$MicroListExtra$splitWhen = F2(
4514
+ function (predicate, list) {
4515
+ return A2(
4516
+ $elm$core$Maybe$map,
4517
+ function (i) {
4518
+ return A2($elm_explorations$test$MicroListExtra$splitAt, i, list);
4519
+ },
4520
+ A2($elm_explorations$test$MicroListExtra$findIndex, predicate, list));
4521
+ });
4522
+ var $elm_explorations$test$Test$Runner$Distribution$formatTable = function (_v0) {
4523
+ var distributionCount = _v0.distributionCount;
4524
+ var runsElapsed = _v0.runsElapsed;
4525
+ var runsElapsed_ = runsElapsed;
4526
+ var distributionList = $elm$core$Dict$toList(distributionCount);
4527
+ var distribution = A2(
4528
+ $elm$core$List$map,
4529
+ function (_v8) {
4530
+ var labels = _v8.a;
4531
+ var count = _v8.b;
4532
+ var percentage = $elm$core$Basics$round((count / runsElapsed_) * 1000) / 10;
4533
+ return _Utils_Tuple3(labels, count, percentage);
4534
+ },
4535
+ A2(
4536
+ $elm$core$List$filter,
4537
+ function (_v7) {
4538
+ var labels = _v7.a;
4539
+ var count = _v7.b;
4540
+ return !(($elm$core$List$length(labels) === 1) && ((!count) && A2($elm_explorations$test$Test$Runner$Distribution$isStrictSubset, distributionList, labels)));
4541
+ },
4542
+ distributionList));
4543
+ var _v1 = A2(
4544
+ $elm$core$List$partition,
4545
+ function (_v3) {
4546
+ var labels = _v3.a;
4547
+ return $elm$core$List$length(labels) <= 1;
4548
+ },
4549
+ A2(
4550
+ $elm$core$List$sortBy,
4551
+ function (_v2) {
4552
+ var count = _v2.b;
4553
+ return -count;
4554
+ },
4555
+ distribution));
4556
+ var baseRows = _v1.a;
4557
+ var combinationsRows = _v1.b;
4558
+ var reorderedTable = _Utils_ap(baseRows, combinationsRows);
4559
+ var rawTable = A2($elm_explorations$test$Test$Runner$Distribution$formatAsciiTable, runsElapsed_, reorderedTable);
4560
+ var _v4 = A2(
4561
+ $elm$core$Maybe$withDefault,
4562
+ _Utils_Tuple2(rawTable, _List_Nil),
4563
+ A2(
4564
+ $elm_explorations$test$MicroListExtra$splitWhen,
4565
+ function (_v5) {
4566
+ var item = _v5.item;
4567
+ var _v6 = item;
4568
+ var labels = _v6.a;
4569
+ return $elm$core$List$length(labels) > 1;
4570
+ },
4571
+ rawTable));
4572
+ var base = _v4.a;
4573
+ var combinations = _v4.b;
4574
+ var baseString = A2(
4575
+ $elm$core$String$join,
4576
+ '\n',
4577
+ A2(
4578
+ $elm$core$List$map,
4579
+ function ($) {
4580
+ return $.renderedRow;
4581
+ },
4582
+ base));
4583
+ var combinationsString_ = $elm$core$List$isEmpty(combinations) ? '' : A3(
4584
+ $elm$core$String$replace,
4585
+ '{COMBINATIONS}',
4586
+ A2(
4587
+ $elm$core$String$join,
4588
+ '\n',
4589
+ A2(
4590
+ $elm$core$List$map,
4591
+ function ($) {
4592
+ return $.renderedRow;
4593
+ },
4594
+ combinations)),
4595
+ '\n\nCombinations (included in the above base counts):\n{COMBINATIONS}');
4596
+ var table = _Utils_ap(baseString, combinationsString_);
4597
+ return A3($elm$core$String$replace, '{CATEGORIES}', table, 'Distribution report:\n====================\n{CATEGORIES}');
4598
+ };
4599
+ var $elm_explorations$test$Test$Distribution$distributionReportTable = function (r) {
4600
+ return $elm_explorations$test$Test$Runner$Distribution$formatTable(r);
4601
+ };
4602
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$distributionReportToString = function (distributionReport) {
4603
+ switch (distributionReport.$) {
4604
+ case 'NoDistribution':
4605
+ return $elm$core$Maybe$Nothing;
4606
+ case 'DistributionToReport':
4607
+ var r = distributionReport.a;
4608
+ return $elm$core$Maybe$Just(
4609
+ $elm_explorations$test$Test$Distribution$distributionReportTable(r));
4610
+ case 'DistributionCheckSucceeded':
4611
+ return $elm$core$Maybe$Nothing;
4612
+ default:
4613
+ var r = distributionReport.a;
4614
+ return $elm$core$Maybe$Just(
4615
+ $elm_explorations$test$Test$Distribution$distributionReportTable(r));
4616
+ }
4617
+ };
4618
+ var $elm$core$Basics$composeL = F3(
4619
+ function (g, f, x) {
4620
+ return g(
4621
+ f(x));
4622
+ });
4623
+ var $elm$core$String$isEmpty = function (string) {
4624
+ return string === '';
4625
+ };
4626
+ var $elm_explorations$test$Test$Runner$formatLabels = F3(
4627
+ function (formatDescription, formatTest, labels) {
4628
+ var _v0 = A2(
4629
+ $elm$core$List$filter,
4630
+ A2($elm$core$Basics$composeL, $elm$core$Basics$not, $elm$core$String$isEmpty),
4631
+ labels);
4632
+ if (!_v0.b) {
4633
+ return _List_Nil;
4634
+ } else {
4635
+ var test = _v0.a;
4636
+ var descriptions = _v0.b;
4637
+ return $elm$core$List$reverse(
4638
+ A2(
4639
+ $elm$core$List$cons,
4640
+ formatTest(test),
4641
+ A2($elm$core$List$map, formatDescription, descriptions)));
4642
+ }
4643
+ });
4644
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar = F2(
4645
+ function (icon, str) {
4646
+ return $elm$core$String$fromChar(icon) + (' ' + (str + '\n'));
4647
+ });
4648
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureLabelsToText = A2(
4649
+ $elm$core$Basics$composeR,
4650
+ A2(
4651
+ $elm_explorations$test$Test$Runner$formatLabels,
4652
+ A2(
4653
+ $elm$core$Basics$composeL,
4654
+ A2($elm$core$Basics$composeL, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain),
4655
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
4656
+ _Utils_chr('↓'))),
4657
+ A2(
4658
+ $elm$core$Basics$composeL,
4659
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$red,
4660
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
4661
+ _Utils_chr('✗')))),
4662
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat);
4663
+ var $elm$core$List$maybeCons = F3(
4664
+ function (f, mx, xs) {
4665
+ var _v0 = f(mx);
4666
+ if (_v0.$ === 'Just') {
4667
+ var x = _v0.a;
4668
+ return A2($elm$core$List$cons, x, xs);
4669
+ } else {
4670
+ return xs;
4671
+ }
4672
+ });
4673
+ var $elm$core$List$filterMap = F2(
4674
+ function (f, xs) {
4675
+ return A3(
4676
+ $elm$core$List$foldr,
4677
+ $elm$core$List$maybeCons(f),
4678
+ _List_Nil,
4679
+ xs);
4680
+ });
4681
+ var $elm$core$Basics$always = F2(
4682
+ function (a, _v0) {
4683
+ return a;
4684
+ });
4685
+ var $elm$core$List$concatMap = F2(
4686
+ function (f, list) {
4687
+ return $elm$core$List$concat(
4688
+ A2($elm$core$List$map, f, list));
4689
+ });
4690
+ var $elm$core$Array$fromListHelp = F3(
4691
+ function (list, nodeList, nodeListSize) {
4692
+ fromListHelp:
4693
+ while (true) {
4694
+ var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, list);
4695
+ var jsArray = _v0.a;
4696
+ var remainingItems = _v0.b;
4697
+ if (_Utils_cmp(
4698
+ $elm$core$Elm$JsArray$length(jsArray),
4699
+ $elm$core$Array$branchFactor) < 0) {
4700
+ return A2(
4701
+ $elm$core$Array$builderToArray,
4702
+ true,
4703
+ {nodeList: nodeList, nodeListSize: nodeListSize, tail: jsArray});
4704
+ } else {
4705
+ var $temp$list = remainingItems,
4706
+ $temp$nodeList = A2(
4707
+ $elm$core$List$cons,
4708
+ $elm$core$Array$Leaf(jsArray),
4709
+ nodeList),
4710
+ $temp$nodeListSize = nodeListSize + 1;
4711
+ list = $temp$list;
4712
+ nodeList = $temp$nodeList;
4713
+ nodeListSize = $temp$nodeListSize;
4714
+ continue fromListHelp;
4715
+ }
4716
+ }
4717
+ });
4718
+ var $elm$core$Array$fromList = function (list) {
4719
+ if (!list.b) {
4720
+ return $elm$core$Array$empty;
4721
+ } else {
4722
+ return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0);
4723
+ }
4724
+ };
4725
+ var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy;
4726
+ var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep);
4727
+ var $elm$core$Basics$ge = _Utils_ge;
4728
+ var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet;
4729
+ var $elm$core$Array$getHelp = F3(
4730
+ function (shift, index, tree) {
4731
+ getHelp:
4732
+ while (true) {
4733
+ var pos = $elm$core$Array$bitMask & (index >>> shift);
4734
+ var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree);
4735
+ if (_v0.$ === 'SubTree') {
4736
+ var subTree = _v0.a;
4737
+ var $temp$shift = shift - $elm$core$Array$shiftStep,
4738
+ $temp$index = index,
4739
+ $temp$tree = subTree;
4740
+ shift = $temp$shift;
4741
+ index = $temp$index;
4742
+ tree = $temp$tree;
4743
+ continue getHelp;
4744
+ } else {
4745
+ var values = _v0.a;
4746
+ return A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, values);
4747
+ }
4748
+ }
4749
+ });
4750
+ var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy;
4751
+ var $elm$core$Array$tailIndex = function (len) {
4752
+ return (len >>> 5) << 5;
4753
+ };
4754
+ var $elm$core$Array$get = F2(
4755
+ function (index, _v0) {
4756
+ var len = _v0.a;
4757
+ var startShift = _v0.b;
4758
+ var tree = _v0.c;
4759
+ var tail = _v0.d;
4760
+ return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? $elm$core$Maybe$Nothing : ((_Utils_cmp(
4761
+ index,
4762
+ $elm$core$Array$tailIndex(len)) > -1) ? $elm$core$Maybe$Just(
4763
+ A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just(
4764
+ A3($elm$core$Array$getHelp, startShift, index, tree)));
4765
+ });
4766
+ var $elm$core$Array$length = function (_v0) {
4767
+ var len = _v0.a;
4768
+ return len;
4769
+ };
4770
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$Added = function (a) {
4771
+ return {$: 'Added', a: a};
4772
+ };
4773
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$CannotGetA = function (a) {
4774
+ return {$: 'CannotGetA', a: a};
4775
+ };
4776
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$CannotGetB = function (a) {
4777
+ return {$: 'CannotGetB', a: a};
4778
+ };
4779
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$NoChange = function (a) {
4780
+ return {$: 'NoChange', a: a};
4781
+ };
4782
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$Removed = function (a) {
3813
4783
  return {$: 'Removed', a: a};
3814
4784
  };
3815
4785
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$UnexpectedPath = F2(
@@ -3902,9 +4872,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$makeChanges = F3(
3902
4872
  return A5($mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$makeChangesHelp, _List_Nil, getA, getB, latest, tail);
3903
4873
  }
3904
4874
  });
3905
- var $elm$core$Basics$negate = function (n) {
3906
- return -n;
3907
- };
3908
4875
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$Continue = function (a) {
3909
4876
  return {$: 'Continue', a: a};
3910
4877
  };
@@ -4200,27 +5167,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Highlightable$diffLists = F
4200
5167
  $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Highlightable$fromDiff,
4201
5168
  A2($mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Diff$diff, expected, actual));
4202
5169
  });
4203
- var $elm$core$List$drop = F2(
4204
- function (n, list) {
4205
- drop:
4206
- while (true) {
4207
- if (n <= 0) {
4208
- return list;
4209
- } else {
4210
- if (!list.b) {
4211
- return list;
4212
- } else {
4213
- var x = list.a;
4214
- var xs = list.b;
4215
- var $temp$n = n - 1,
4216
- $temp$list = xs;
4217
- n = $temp$n;
4218
- list = $temp$list;
4219
- continue drop;
4220
- }
4221
- }
4222
- }
4223
- });
4224
5170
  var $elm$core$String$toFloat = _String_toFloat;
4225
5171
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleFormat$isFloat = function (str) {
4226
5172
  var _v0 = $elm$core$String$toFloat(str);
@@ -4249,8 +5195,8 @@ var $elm$core$Tuple$pair = F2(
4249
5195
  });
4250
5196
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$Highlightable$resolve = F2(
4251
5197
  function (_v0, highlightable) {
4252
- var fromPlain = _v0.fromPlain;
4253
5198
  var fromHighlighted = _v0.fromHighlighted;
5199
+ var fromPlain = _v0.fromPlain;
4254
5200
  if (highlightable.$ === 'Highlighted') {
4255
5201
  var val = highlightable.a;
4256
5202
  return fromHighlighted(val);
@@ -4328,8 +5274,8 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleFormat$listDiffToStr
4328
5274
  function (index, description, _v0, originals) {
4329
5275
  listDiffToString:
4330
5276
  while (true) {
4331
- var actual = _v0.actual;
4332
5277
  var expected = _v0.expected;
5278
+ var actual = _v0.actual;
4333
5279
  var _v1 = _Utils_Tuple2(expected, actual);
4334
5280
  if (!_v1.a.b) {
4335
5281
  if (!_v1.b.b) {
@@ -4446,10 +5392,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleFormat$format = F3(
4446
5392
  {actual: actual, expected: expected},
4447
5393
  {originalActual: actual, originalExpected: expected});
4448
5394
  default:
4449
- var missing = reason.a.missing;
4450
- var extra = reason.a.extra;
4451
- var actual = reason.a.actual;
4452
5395
  var expected = reason.a.expected;
5396
+ var actual = reason.a.actual;
5397
+ var extra = reason.a.extra;
5398
+ var missing = reason.a.missing;
4453
5399
  var missingStr = $elm$core$List$isEmpty(missing) ? '' : ('\nThese keys are missing: ' + function (d) {
4454
5400
  return '[ ' + (d + ' ]');
4455
5401
  }(
@@ -4564,11 +5510,11 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$indent = fun
4564
5510
  },
4565
5511
  A2($elm$core$String$split, '\n', str)));
4566
5512
  };
4567
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureToText = F2(
4568
- function (useColor, _v0) {
4569
- var reason = _v0.reason;
4570
- var description = _v0.description;
5513
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureToText = F3(
5514
+ function (useColor, _v0, distributionReport) {
4571
5515
  var given = _v0.given;
5516
+ var description = _v0.description;
5517
+ var reason = _v0.reason;
4572
5518
  var formatEquality = function () {
4573
5519
  if (useColor.$ === 'Monochrome') {
4574
5520
  return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$FormatMonochrome$formatEquality;
@@ -4579,18 +5525,29 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureToTex
4579
5525
  var messageText = $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain(
4580
5526
  '\n' + ($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$indent(
4581
5527
  A3($mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleFormat$format, formatEquality, description, reason)) + '\n\n'));
4582
- if (given.$ === 'Nothing') {
4583
- return messageText;
4584
- } else {
4585
- var givenStr = given.a;
4586
- return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat(
5528
+ return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat(
5529
+ A2(
5530
+ $elm$core$List$filterMap,
5531
+ $elm$core$Basics$identity,
4587
5532
  _List_fromArray(
4588
5533
  [
4589
- $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark(
4590
- $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain('\nGiven ' + (givenStr + '\n'))),
4591
- messageText
4592
- ]));
4593
- }
5534
+ A2(
5535
+ $elm$core$Maybe$map,
5536
+ function (s) {
5537
+ return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark(
5538
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain(
5539
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$indent('\n' + (s + '\n'))));
5540
+ },
5541
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$distributionReportToString(distributionReport)),
5542
+ A2(
5543
+ $elm$core$Maybe$map,
5544
+ function (str) {
5545
+ return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark(
5546
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain('\nGiven ' + (str + '\n')));
5547
+ },
5548
+ given),
5549
+ $elm$core$Maybe$Just(messageText)
5550
+ ])));
4594
5551
  });
4595
5552
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$formatTodo = F2(
4596
5553
  function (labels, todo) {
@@ -4621,15 +5578,45 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$logsToText =
4621
5578
  ''
4622
5579
  ])));
4623
5580
  };
5581
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$successLabelsToText = A2(
5582
+ $elm$core$Basics$composeR,
5583
+ A2(
5584
+ $elm_explorations$test$Test$Runner$formatLabels,
5585
+ A2(
5586
+ $elm$core$Basics$composeL,
5587
+ A2($elm$core$Basics$composeL, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark, $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain),
5588
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
5589
+ _Utils_chr('↓'))),
5590
+ A2(
5591
+ $elm$core$Basics$composeL,
5592
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$green,
5593
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
5594
+ _Utils_chr('✓')))),
5595
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat);
4624
5596
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$onResult = F2(
4625
5597
  function (useColor, testResult) {
4626
5598
  if (testResult.$ === 'Passed') {
4627
- return $elm$core$Maybe$Nothing;
5599
+ var labels = testResult.a.labels;
5600
+ var distributionReports = testResult.a.distributionReports;
5601
+ var successDistributionReports = A2($elm$core$List$filterMap, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$distributionReportToString, distributionReports);
5602
+ return $elm$core$List$isEmpty(successDistributionReports) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just(
5603
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat(
5604
+ _List_fromArray(
5605
+ [
5606
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$successLabelsToText(labels),
5607
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain('\n'),
5608
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$dark(
5609
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain(
5610
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$indent(
5611
+ A2($elm$core$String$join, '\n\n\n', successDistributionReports)))),
5612
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$plain('\n\n')
5613
+ ])));
4628
5614
  } else {
4629
- var logs = testResult.a.logs;
4630
- var failures = testResult.a.failures;
4631
- var todos = testResult.a.todos;
4632
5615
  var labels = testResult.a.labels;
5616
+ var todos = testResult.a.todos;
5617
+ var failures = testResult.a.failures;
5618
+ var logs = testResult.a.logs;
5619
+ var distributionReports = testResult.a.distributionReports;
4633
5620
  return $elm$core$List$isEmpty(todos) ? $elm$core$Maybe$Just(
4634
5621
  $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$ConsoleText$concat(
4635
5622
  $elm$core$List$concat(
@@ -4639,10 +5626,11 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$onResult = F
4639
5626
  [
4640
5627
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureLabelsToText(labels)
4641
5628
  ]),
4642
- A2(
4643
- $elm$core$List$map,
5629
+ A3(
5630
+ $elm$core$List$map2,
4644
5631
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureToText(useColor),
4645
- failures),
5632
+ failures,
5633
+ distributionReports),
4646
5634
  _List_fromArray(
4647
5635
  [
4648
5636
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$logsToText(logs)
@@ -4914,8 +5902,8 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$implementati
4914
5902
  });
4915
5903
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$onBegin = F2(
4916
5904
  function (_v0, testsCount) {
4917
- var fuzzRuns = _v0.fuzzRuns;
4918
5905
  var seed = _v0.seed;
5906
+ var fuzzRuns = _v0.fuzzRuns;
4919
5907
  return $elm$core$Maybe$Just(
4920
5908
  A3(
4921
5909
  $elm$core$String$replace,
@@ -4961,10 +5949,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$summaryTitle
4961
5949
  });
4962
5950
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$formatSummary = F2(
4963
5951
  function (kind, _v0) {
4964
- var todoCount = _v0.todoCount;
4965
- var failedCount = _v0.failedCount;
4966
- var passedCount = _v0.passedCount;
4967
5952
  var totalDuration = _v0.totalDuration;
5953
+ var passedCount = _v0.passedCount;
5954
+ var failedCount = _v0.failedCount;
5955
+ var todoCount = _v0.todoCount;
4968
5956
  return A3(
4969
5957
  $elm$core$String$replace,
4970
5958
  '{{ failed }}',
@@ -4999,21 +5987,25 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$onEnd = F2(
4999
5987
  }
5000
5988
  });
5001
5989
  var $elm$core$Debug$toString = _Debug_toString;
5002
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$displayFailureContent = F3(
5003
- function (todos, failures, logs) {
5990
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$displayFailureContent = F4(
5991
+ function (todos, failures, distributionReports, logs) {
5004
5992
  return A3(
5005
5993
  $elm$core$String$replace,
5006
5994
  '{{ logs }}',
5007
5995
  $elm$core$String$concat(logs),
5008
5996
  A3(
5009
5997
  $elm$core$String$replace,
5010
- '{{ failures }}',
5011
- $elm$core$Debug$toString(failures),
5998
+ '{{ distributionReports }}',
5999
+ $elm$core$Debug$toString(distributionReports),
5012
6000
  A3(
5013
6001
  $elm$core$String$replace,
5014
- '{{ todos }}',
5015
- $elm$core$Debug$toString(todos),
5016
- 'with todos: {{ todos }}\nwith failures: {{ failures }}\nwith debug logs:\n\n{{ logs }}\n')));
6002
+ '{{ failures }}',
6003
+ $elm$core$Debug$toString(failures),
6004
+ A3(
6005
+ $elm$core$String$replace,
6006
+ '{{ todos }}',
6007
+ $elm$core$Debug$toString(todos),
6008
+ 'with todos: {{ todos }}\nwith failures: {{ failures }}\nwith distribution reports: {{ distributionReports }}\nwith debug logs:\n\n{{ logs }}\n'))));
5017
6009
  });
5018
6010
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$formatLabelsHelp = F2(
5019
6011
  function (formattedLines, labels) {
@@ -5062,10 +6054,11 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$onResult = f
5062
6054
  if (result.$ === 'Passed') {
5063
6055
  return $elm$core$Maybe$Nothing;
5064
6056
  } else {
5065
- var logs = result.a.logs;
5066
- var failures = result.a.failures;
5067
- var todos = result.a.todos;
5068
6057
  var labels = result.a.labels;
6058
+ var todos = result.a.todos;
6059
+ var failures = result.a.failures;
6060
+ var logs = result.a.logs;
6061
+ var distributionReports = result.a.distributionReports;
5069
6062
  return $elm$core$Maybe$Just(
5070
6063
  A2(
5071
6064
  $elm$core$String$join,
@@ -5076,7 +6069,7 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$onResult = f
5076
6069
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$formatLabels(labels),
5077
6070
  '',
5078
6071
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$indent(
5079
- A3($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$displayFailureContent, todos, failures, logs))
6072
+ A4($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleDebug$displayFailureContent, todos, failures, distributionReports, logs))
5080
6073
  ])));
5081
6074
  }
5082
6075
  };
@@ -5098,11 +6091,11 @@ var $elm$json$Json$Encode$array = F2(
5098
6091
  });
5099
6092
  var $elm$json$Json$Encode$null = _Json_encodeNull;
5100
6093
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$encodeExercismResult = function (_v0) {
5101
- var output = _v0.output;
5102
- var message = _v0.message;
5103
- var status = _v0.status;
5104
- var taskId = _v0.taskId;
5105
6094
  var name = _v0.name;
6095
+ var taskId = _v0.taskId;
6096
+ var status = _v0.status;
6097
+ var message = _v0.message;
6098
+ var output = _v0.output;
5106
6099
  return $elm$json$Json$Encode$object(
5107
6100
  _List_fromArray(
5108
6101
  [
@@ -5160,8 +6153,8 @@ var $elm$core$Array$map = F2(
5160
6153
  });
5161
6154
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$summaryStatus = F2(
5162
6155
  function (kind, _v0) {
5163
- var todoCount = _v0.todoCount;
5164
6156
  var failedCount = _v0.failedCount;
6157
+ var todoCount = _v0.todoCount;
5165
6158
  var _v1 = _Utils_Tuple3(kind, failedCount, todoCount);
5166
6159
  if (((_v1.a.$ === 'Plain') && (!_v1.b)) && (!_v1.c)) {
5167
6160
  var _v2 = _v1.a;
@@ -5170,24 +6163,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$summaryStatus =
5170
6163
  return 'fail';
5171
6164
  }
5172
6165
  });
5173
- var $elm$core$List$maybeCons = F3(
5174
- function (f, mx, xs) {
5175
- var _v0 = f(mx);
5176
- if (_v0.$ === 'Just') {
5177
- var x = _v0.a;
5178
- return A2($elm$core$List$cons, x, xs);
5179
- } else {
5180
- return xs;
5181
- }
5182
- });
5183
- var $elm$core$List$filterMap = F2(
5184
- function (f, xs) {
5185
- return A3(
5186
- $elm$core$List$foldr,
5187
- $elm$core$List$maybeCons(f),
5188
- _List_Nil,
5189
- xs);
5190
- });
5191
6166
  var $elm$core$List$head = function (list) {
5192
6167
  if (list.b) {
5193
6168
  var x = list.a;
@@ -5224,9 +6199,9 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$indent = functio
5224
6199
  };
5225
6200
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$failureToText = F2(
5226
6201
  function (useColor, _v0) {
5227
- var reason = _v0.reason;
5228
- var description = _v0.description;
5229
6202
  var given = _v0.given;
6203
+ var description = _v0.description;
6204
+ var reason = _v0.reason;
5230
6205
  var formatEquality = function () {
5231
6206
  if (useColor.$ === 'Monochrome') {
5232
6207
  return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$FormatMonochrome$formatEquality;
@@ -5273,10 +6248,11 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$toExercismResult
5273
6248
  taskId: $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$extractTaskId(labels)
5274
6249
  };
5275
6250
  } else {
5276
- var logs = testResult.a.logs;
5277
- var todos = testResult.a.todos;
5278
- var failures = testResult.a.failures;
5279
6251
  var labels = testResult.a.labels;
6252
+ var failures = testResult.a.failures;
6253
+ var todos = testResult.a.todos;
6254
+ var logs = testResult.a.logs;
6255
+ var distributionReports = testResult.a.distributionReports;
5280
6256
  return {
5281
6257
  message: $elm$core$Maybe$Just(
5282
6258
  A2($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Exercism$failureMessage, failures, todos)),
@@ -5359,10 +6335,10 @@ var $elm$json$Json$Encode$list = F2(
5359
6335
  });
5360
6336
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onBegin = F2(
5361
6337
  function (_v0, testsCount) {
5362
- var paths = _v0.paths;
5363
- var globs = _v0.globs;
5364
- var fuzzRuns = _v0.fuzzRuns;
5365
6338
  var seed = _v0.seed;
6339
+ var fuzzRuns = _v0.fuzzRuns;
6340
+ var globs = _v0.globs;
6341
+ var paths = _v0.paths;
5366
6342
  return $elm$core$Maybe$Just(
5367
6343
  A2(
5368
6344
  $elm$json$Json$Encode$encode,
@@ -5393,7 +6369,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onBegin = F2(
5393
6369
  A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, paths))
5394
6370
  ]))) + '\n');
5395
6371
  });
5396
- var $elm$core$String$fromFloat = _String_fromNumber;
5397
6372
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onEnd = F2(
5398
6373
  function (kind, results) {
5399
6374
  var autofail = function () {
@@ -5415,9 +6390,9 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onEnd = F2(
5415
6390
  }
5416
6391
  }();
5417
6392
  var _v0 = $mpizenberg$elm_test_runner$ElmTestRunner$Result$summary(results);
5418
- var failedCount = _v0.failedCount;
5419
- var passedCount = _v0.passedCount;
5420
6393
  var totalDuration = _v0.totalDuration;
6394
+ var passedCount = _v0.passedCount;
6395
+ var failedCount = _v0.failedCount;
5421
6396
  return $elm$core$Maybe$Just(
5422
6397
  A2(
5423
6398
  $elm$json$Json$Encode$encode,
@@ -5443,6 +6418,97 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onEnd = F2(
5443
6418
  _Utils_Tuple2('autoFail', autofail)
5444
6419
  ]))) + '\n');
5445
6420
  });
6421
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionCount = function (dict) {
6422
+ return A2(
6423
+ $elm$json$Json$Encode$list,
6424
+ function (_v0) {
6425
+ var labels = _v0.a;
6426
+ var count = _v0.b;
6427
+ return $elm$json$Json$Encode$object(
6428
+ _List_fromArray(
6429
+ [
6430
+ _Utils_Tuple2(
6431
+ 'labels',
6432
+ A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, labels)),
6433
+ _Utils_Tuple2(
6434
+ 'count',
6435
+ $elm$json$Json$Encode$int(count))
6436
+ ]));
6437
+ },
6438
+ $elm$core$Dict$toList(dict));
6439
+ };
6440
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeSumType = F2(
6441
+ function (sumType, data) {
6442
+ return $elm$json$Json$Encode$object(
6443
+ _List_fromArray(
6444
+ [
6445
+ _Utils_Tuple2(
6446
+ 'type',
6447
+ $elm$json$Json$Encode$string(sumType)),
6448
+ _Utils_Tuple2('data', data)
6449
+ ]));
6450
+ });
6451
+ var $elm$json$Json$Encode$float = _Json_wrap;
6452
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionReport = function (distributionReport) {
6453
+ switch (distributionReport.$) {
6454
+ case 'NoDistribution':
6455
+ return A2($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeSumType, 'NoDistribution', $elm$json$Json$Encode$null);
6456
+ case 'DistributionToReport':
6457
+ var r = distributionReport.a;
6458
+ return A2(
6459
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeSumType,
6460
+ 'DistributionToReport',
6461
+ $elm$json$Json$Encode$object(
6462
+ _List_fromArray(
6463
+ [
6464
+ _Utils_Tuple2(
6465
+ 'distributionCount',
6466
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionCount(r.distributionCount)),
6467
+ _Utils_Tuple2(
6468
+ 'runsElapsed',
6469
+ $elm$json$Json$Encode$int(r.runsElapsed))
6470
+ ])));
6471
+ case 'DistributionCheckSucceeded':
6472
+ var r = distributionReport.a;
6473
+ return A2(
6474
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeSumType,
6475
+ 'DistributionCheckSucceeded',
6476
+ $elm$json$Json$Encode$object(
6477
+ _List_fromArray(
6478
+ [
6479
+ _Utils_Tuple2(
6480
+ 'distributionCount',
6481
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionCount(r.distributionCount)),
6482
+ _Utils_Tuple2(
6483
+ 'runsElapsed',
6484
+ $elm$json$Json$Encode$int(r.runsElapsed))
6485
+ ])));
6486
+ default:
6487
+ var r = distributionReport.a;
6488
+ return A2(
6489
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeSumType,
6490
+ 'DistributionCheckFailed',
6491
+ $elm$json$Json$Encode$object(
6492
+ _List_fromArray(
6493
+ [
6494
+ _Utils_Tuple2(
6495
+ 'distributionCount',
6496
+ $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionCount(r.distributionCount)),
6497
+ _Utils_Tuple2(
6498
+ 'runsElapsed',
6499
+ $elm$json$Json$Encode$int(r.runsElapsed)),
6500
+ _Utils_Tuple2(
6501
+ 'badLabel',
6502
+ $elm$json$Json$Encode$string(r.badLabel)),
6503
+ _Utils_Tuple2(
6504
+ 'badLabelPercentage',
6505
+ $elm$json$Json$Encode$float(r.badLabelPercentage)),
6506
+ _Utils_Tuple2(
6507
+ 'expectedDistribution',
6508
+ $elm$json$Json$Encode$string(r.expectedDistribution))
6509
+ ])));
6510
+ }
6511
+ };
5446
6512
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeReasonType = F2(
5447
6513
  function (reasonType, data) {
5448
6514
  return $elm$json$Json$Encode$object(
@@ -5536,10 +6602,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeReason = F2(
5536
6602
  A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, actual))
5537
6603
  ])));
5538
6604
  default:
5539
- var missing = reason.a.missing;
5540
- var extra = reason.a.extra;
5541
- var actual = reason.a.actual;
5542
6605
  var expected = reason.a.expected;
6606
+ var actual = reason.a.actual;
6607
+ var extra = reason.a.extra;
6608
+ var missing = reason.a.missing;
5543
6609
  return A2(
5544
6610
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeReasonType,
5545
6611
  'CollectionDiff',
@@ -5561,10 +6627,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeReason = F2(
5561
6627
  ])));
5562
6628
  }
5563
6629
  });
5564
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$jsonEncodeFailure = function (_v0) {
5565
- var reason = _v0.reason;
5566
- var description = _v0.description;
6630
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeFailure = function (_v0) {
5567
6631
  var given = _v0.given;
6632
+ var description = _v0.description;
6633
+ var reason = _v0.reason;
5568
6634
  return $elm$json$Json$Encode$object(
5569
6635
  _List_fromArray(
5570
6636
  [
@@ -5585,36 +6651,42 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$jsonEncodeFailure =
5585
6651
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onResult = function (result) {
5586
6652
  var _v0 = function () {
5587
6653
  if (result.$ === 'Passed') {
5588
- var duration = result.a.duration;
5589
6654
  var labels = result.a.labels;
6655
+ var duration = result.a.duration;
6656
+ var distributionReports = result.a.distributionReports;
5590
6657
  return {
5591
6658
  status: 'pass',
6659
+ testDistributionReports: A2($elm$json$Json$Encode$list, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionReport, distributionReports),
5592
6660
  testDuration: duration,
5593
6661
  testFailures: A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, _List_Nil),
5594
6662
  testLabels: $elm$core$List$reverse(labels)
5595
6663
  };
5596
6664
  } else {
5597
- var failures = result.a.failures;
5598
- var todos = result.a.todos;
5599
- var duration = result.a.duration;
5600
6665
  var labels = result.a.labels;
6666
+ var duration = result.a.duration;
6667
+ var todos = result.a.todos;
6668
+ var failures = result.a.failures;
6669
+ var distributionReports = result.a.distributionReports;
5601
6670
  return (!$elm$core$List$isEmpty(todos)) ? {
5602
6671
  status: 'todo',
6672
+ testDistributionReports: A2($elm$json$Json$Encode$list, $elm$core$Basics$identity, _List_Nil),
5603
6673
  testDuration: duration,
5604
6674
  testFailures: A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, todos),
5605
6675
  testLabels: $elm$core$List$reverse(labels)
5606
6676
  } : {
5607
6677
  status: 'fail',
6678
+ testDistributionReports: A2($elm$json$Json$Encode$list, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeDistributionReport, distributionReports),
5608
6679
  testDuration: duration,
5609
- testFailures: A2($elm$json$Json$Encode$list, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$jsonEncodeFailure, failures),
6680
+ testFailures: A2($elm$json$Json$Encode$list, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeFailure, failures),
5610
6681
  testLabels: $elm$core$List$reverse(labels)
5611
6682
  };
5612
6683
  }
5613
6684
  }();
5614
- var testDuration = _v0.testDuration;
5615
- var testFailures = _v0.testFailures;
5616
- var testLabels = _v0.testLabels;
5617
6685
  var status = _v0.status;
6686
+ var testLabels = _v0.testLabels;
6687
+ var testFailures = _v0.testFailures;
6688
+ var testDistributionReports = _v0.testDistributionReports;
6689
+ var testDuration = _v0.testDuration;
5618
6690
  return $elm$core$Maybe$Just(
5619
6691
  A2(
5620
6692
  $elm$json$Json$Encode$encode,
@@ -5632,6 +6704,7 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$onResult = function
5632
6704
  'labels',
5633
6705
  A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, testLabels)),
5634
6706
  _Utils_Tuple2('failures', testFailures),
6707
+ _Utils_Tuple2('distributionReports', testDistributionReports),
5635
6708
  _Utils_Tuple2(
5636
6709
  'duration',
5637
6710
  $elm$json$Json$Encode$string(
@@ -5662,7 +6735,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$needsIndent = fun
5662
6735
  return false;
5663
6736
  }
5664
6737
  };
5665
- var $elm$core$String$length = _String_length;
5666
6738
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$propToString = function (value) {
5667
6739
  switch (value.$) {
5668
6740
  case 'StrNode':
@@ -5755,6 +6827,22 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$classAndName = func
5755
6827
  name);
5756
6828
  }
5757
6829
  };
6830
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$distributionReportToString = function (distributionReport) {
6831
+ switch (distributionReport.$) {
6832
+ case 'NoDistribution':
6833
+ return $elm$core$Maybe$Nothing;
6834
+ case 'DistributionToReport':
6835
+ var r = distributionReport.a;
6836
+ return $elm$core$Maybe$Just(
6837
+ $elm_explorations$test$Test$Distribution$distributionReportTable(r));
6838
+ case 'DistributionCheckSucceeded':
6839
+ return $elm$core$Maybe$Nothing;
6840
+ default:
6841
+ var r = distributionReport.a;
6842
+ return $elm$core$Maybe$Just(
6843
+ $elm_explorations$test$Test$Distribution$distributionReportTable(r));
6844
+ }
6845
+ };
5758
6846
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$reasonToString = F2(
5759
6847
  function (description, reason) {
5760
6848
  switch (reason.$) {
@@ -5783,17 +6871,17 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$reasonToString = F2
5783
6871
  var actual = reason.b;
5784
6872
  return A2($elm$core$String$join, ', ', expected) + ('\n\nhad different elements than\n\n' + A2($elm$core$String$join, ', ', actual));
5785
6873
  default:
5786
- var missing = reason.a.missing;
5787
- var extra = reason.a.extra;
5788
- var actual = reason.a.actual;
5789
6874
  var expected = reason.a.expected;
6875
+ var actual = reason.a.actual;
6876
+ var extra = reason.a.extra;
6877
+ var missing = reason.a.missing;
5790
6878
  return expected + ('\n\nhad different contents than\n\n' + (actual + ('\n\nthese were extra:\n\n' + (A2($elm$core$String$join, '\n', extra) + ('\n\nthese were missing:\n\n' + A2($elm$core$String$join, '\n', missing))))));
5791
6879
  }
5792
6880
  });
5793
6881
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$formatFailure = function (_v0) {
5794
- var reason = _v0.reason;
5795
- var description = _v0.description;
5796
6882
  var given = _v0.given;
6883
+ var description = _v0.description;
6884
+ var reason = _v0.reason;
5797
6885
  var message = A2($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$reasonToString, description, reason);
5798
6886
  if (given.$ === 'Just') {
5799
6887
  var str = given.a;
@@ -5840,8 +6928,18 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$StrNode = functio
5840
6928
  var $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$string = function (str) {
5841
6929
  return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$StrNode(str);
5842
6930
  };
5843
- var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeFailures = F2(
5844
- function (failures, todos) {
6931
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeFailures = F3(
6932
+ function (failures, distributionReports, todos) {
6933
+ var stdout = function () {
6934
+ var _v0 = A2($elm$core$List$filterMap, $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$distributionReportToString, distributionReports);
6935
+ if (!_v0.b) {
6936
+ return $elm$core$Maybe$Nothing;
6937
+ } else {
6938
+ var list = _v0;
6939
+ return $elm$core$Maybe$Just(
6940
+ A2($elm$core$String$join, '\n\n\n', list));
6941
+ }
6942
+ }();
5845
6943
  var message = (!$elm$core$List$isEmpty(failures)) ? A2(
5846
6944
  $elm$core$String$join,
5847
6945
  '\n\n\n',
@@ -5853,12 +6951,24 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeFailures = F2
5853
6951
  $elm$core$Basics$append('TODO: '),
5854
6952
  todos));
5855
6953
  var attributesDict = $elm$core$Dict$fromList(
5856
- _List_fromArray(
5857
- [
5858
- _Utils_Tuple2(
5859
- 'message',
5860
- $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$string(message))
5861
- ]));
6954
+ A2(
6955
+ $elm$core$List$filterMap,
6956
+ $elm$core$Basics$identity,
6957
+ _List_fromArray(
6958
+ [
6959
+ $elm$core$Maybe$Just(
6960
+ _Utils_Tuple2(
6961
+ 'message',
6962
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$string(message))),
6963
+ A2(
6964
+ $elm$core$Maybe$map,
6965
+ function (out) {
6966
+ return _Utils_Tuple2(
6967
+ 'system-out',
6968
+ $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$string(out));
6969
+ },
6970
+ stdout)
6971
+ ])));
5862
6972
  return $mpizenberg$elm_test_runner$ElmTestRunner$Vendor$XmlEncode$object(
5863
6973
  _List_fromArray(
5864
6974
  [
@@ -5880,16 +6990,16 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeTestResult =
5880
6990
  var test = result.a;
5881
6991
  return {
5882
6992
  duration: test.duration,
5883
- failures: A2($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeFailures, test.failures, test.todos),
6993
+ failures: A3($mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeFailures, test.failures, test.distributionReports, test.todos),
5884
6994
  labels: test.labels,
5885
6995
  logs: test.logs
5886
6996
  };
5887
6997
  }
5888
6998
  }();
5889
- var logs = _v0.logs;
5890
- var failures = _v0.failures;
5891
- var duration = _v0.duration;
5892
6999
  var labels = _v0.labels;
7000
+ var duration = _v0.duration;
7001
+ var failures = _v0.failures;
7002
+ var logs = _v0.logs;
5893
7003
  var _v2 = $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$classAndName(labels);
5894
7004
  var _class = _v2.a;
5895
7005
  var name = _v2.b;
@@ -5953,9 +7063,9 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$summary = F2(
5953
7063
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$encodeTestResult,
5954
7064
  $elm$core$Array$toList(results)));
5955
7065
  var _v0 = $mpizenberg$elm_test_runner$ElmTestRunner$Result$summary(results);
5956
- var todoCount = _v0.todoCount;
5957
- var failedCount = _v0.failedCount;
5958
7066
  var totalDuration = _v0.totalDuration;
7067
+ var failedCount = _v0.failedCount;
7068
+ var todoCount = _v0.todoCount;
5959
7069
  var suiteAttributes = $elm$core$Dict$fromList(
5960
7070
  _List_fromArray(
5961
7071
  [
@@ -6006,12 +7116,12 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Junit$implementation = {
6006
7116
  onResult: $elm$core$Basics$always($elm$core$Maybe$Nothing)
6007
7117
  };
6008
7118
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$chooseReporter = function (_v0) {
6009
- var paths = _v0.paths;
6010
- var globs = _v0.globs;
6011
- var verbosity = _v0.verbosity;
6012
- var mode = _v0.mode;
6013
- var fuzzRuns = _v0.fuzzRuns;
6014
7119
  var initialSeed = _v0.initialSeed;
7120
+ var fuzzRuns = _v0.fuzzRuns;
7121
+ var mode = _v0.mode;
7122
+ var verbosity = _v0.verbosity;
7123
+ var globs = _v0.globs;
7124
+ var paths = _v0.paths;
6015
7125
  switch (mode) {
6016
7126
  case 'json':
6017
7127
  return $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$implementation(
@@ -6058,14 +7168,94 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Failed = function (a) {
6058
7168
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Passed = function (a) {
6059
7169
  return {$: 'Passed', a: a};
6060
7170
  };
6061
- var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_ = F3(
6062
- function (labels, duration, logs) {
6063
- return {duration: duration, labels: labels, logs: logs};
7171
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_distributionReports_ListDistributionReport_ = F4(
7172
+ function (labels, duration, logs, distributionReports) {
7173
+ return {distributionReports: distributionReports, duration: duration, labels: labels, logs: logs};
6064
7174
  });
6065
- var $elm$json$Json$Decode$map3 = _Json_map3;
6066
- var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_ = A4(
6067
- $elm$json$Json$Decode$map3,
6068
- $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_,
7175
+ var $elm_explorations$test$Test$Distribution$DistributionCheckFailed = function (a) {
7176
+ return {$: 'DistributionCheckFailed', a: a};
7177
+ };
7178
+ var $elm_explorations$test$Test$Distribution$DistributionCheckSucceeded = function (a) {
7179
+ return {$: 'DistributionCheckSucceeded', a: a};
7180
+ };
7181
+ var $elm_explorations$test$Test$Distribution$DistributionToReport = function (a) {
7182
+ return {$: 'DistributionToReport', a: a};
7183
+ };
7184
+ var $elm_explorations$test$Test$Distribution$NoDistribution = {$: 'NoDistribution'};
7185
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_distributionCount_Dict_ListString_Int_runsElapsed_Int_ = F2(
7186
+ function (distributionCount, runsElapsed) {
7187
+ return {distributionCount: distributionCount, runsElapsed: runsElapsed};
7188
+ });
7189
+ var $elm$json$Json$Decode$map = _Json_map1;
7190
+ var $elm$json$Json$Decode$map2 = _Json_map2;
7191
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDict_ListString_Int = function () {
7192
+ var decodeDict_ListString_IntTuple = A3(
7193
+ $elm$json$Json$Decode$map2,
7194
+ F2(
7195
+ function (a1, a2) {
7196
+ return _Utils_Tuple2(a1, a2);
7197
+ }),
7198
+ A2(
7199
+ $elm$json$Json$Decode$field,
7200
+ 'A1',
7201
+ $elm$json$Json$Decode$list($elm$json$Json$Decode$string)),
7202
+ A2($elm$json$Json$Decode$field, 'A2', $elm$json$Json$Decode$int));
7203
+ return A2(
7204
+ $elm$json$Json$Decode$map,
7205
+ $elm$core$Dict$fromList,
7206
+ $elm$json$Json$Decode$list(decodeDict_ListString_IntTuple));
7207
+ }();
7208
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_distributionCount_Dict_ListString_Int_runsElapsed_Int_ = A3(
7209
+ $elm$json$Json$Decode$map2,
7210
+ $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_distributionCount_Dict_ListString_Int_runsElapsed_Int_,
7211
+ A2($elm$json$Json$Decode$field, 'distributionCount', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDict_ListString_Int),
7212
+ A2($elm$json$Json$Decode$field, 'runsElapsed', $elm$json$Json$Decode$int));
7213
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_distributionCount_Dict_ListString_Int_runsElapsed_Int_badLabel_String_badLabelPercentage_Float_expectedDistribution_String_ = F5(
7214
+ function (distributionCount, runsElapsed, badLabel, badLabelPercentage, expectedDistribution) {
7215
+ return {badLabel: badLabel, badLabelPercentage: badLabelPercentage, distributionCount: distributionCount, expectedDistribution: expectedDistribution, runsElapsed: runsElapsed};
7216
+ });
7217
+ var $elm$json$Json$Decode$map5 = _Json_map5;
7218
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_distributionCount_Dict_ListString_Int_runsElapsed_Int_badLabel_String_badLabelPercentage_Float_expectedDistribution_String_ = A6(
7219
+ $elm$json$Json$Decode$map5,
7220
+ $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_distributionCount_Dict_ListString_Int_runsElapsed_Int_badLabel_String_badLabelPercentage_Float_expectedDistribution_String_,
7221
+ A2($elm$json$Json$Decode$field, 'distributionCount', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDict_ListString_Int),
7222
+ A2($elm$json$Json$Decode$field, 'runsElapsed', $elm$json$Json$Decode$int),
7223
+ A2($elm$json$Json$Decode$field, 'badLabel', $elm$json$Json$Decode$string),
7224
+ A2($elm$json$Json$Decode$field, 'badLabelPercentage', $elm$json$Json$Decode$float),
7225
+ A2($elm$json$Json$Decode$field, 'expectedDistribution', $elm$json$Json$Decode$string));
7226
+ var $elm$json$Json$Decode$fail = _Json_fail;
7227
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDistributionReportHelp = function (constructor) {
7228
+ switch (constructor) {
7229
+ case 'NoDistribution':
7230
+ return $elm$json$Json$Decode$succeed($elm_explorations$test$Test$Distribution$NoDistribution);
7231
+ case 'DistributionToReport':
7232
+ return A2(
7233
+ $elm$json$Json$Decode$map,
7234
+ $elm_explorations$test$Test$Distribution$DistributionToReport,
7235
+ A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_distributionCount_Dict_ListString_Int_runsElapsed_Int_));
7236
+ case 'DistributionCheckSucceeded':
7237
+ return A2(
7238
+ $elm$json$Json$Decode$map,
7239
+ $elm_explorations$test$Test$Distribution$DistributionCheckSucceeded,
7240
+ A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_distributionCount_Dict_ListString_Int_runsElapsed_Int_));
7241
+ case 'DistributionCheckFailed':
7242
+ return A2(
7243
+ $elm$json$Json$Decode$map,
7244
+ $elm_explorations$test$Test$Distribution$DistributionCheckFailed,
7245
+ A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_distributionCount_Dict_ListString_Int_runsElapsed_Int_badLabel_String_badLabelPercentage_Float_expectedDistribution_String_));
7246
+ default:
7247
+ var other = constructor;
7248
+ return $elm$json$Json$Decode$fail('Unknown constructor for type DistributionReport: ' + other);
7249
+ }
7250
+ };
7251
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDistributionReport = A2(
7252
+ $elm$json$Json$Decode$andThen,
7253
+ $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDistributionReportHelp,
7254
+ A2($elm$json$Json$Decode$field, 'Constructor', $elm$json$Json$Decode$string));
7255
+ var $elm$json$Json$Decode$map4 = _Json_map4;
7256
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_distributionReports_ListDistributionReport_ = A5(
7257
+ $elm$json$Json$Decode$map4,
7258
+ $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_distributionReports_ListDistributionReport_,
6069
7259
  A2(
6070
7260
  $elm$json$Json$Decode$field,
6071
7261
  'labels',
@@ -6074,10 +7264,14 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListStr
6074
7264
  A2(
6075
7265
  $elm$json$Json$Decode$field,
6076
7266
  'logs',
6077
- $elm$json$Json$Decode$list($elm$json$Json$Decode$string)));
6078
- var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_ = F5(
6079
- function (labels, duration, logs, todos, failures) {
6080
- return {duration: duration, failures: failures, labels: labels, logs: logs, todos: todos};
7267
+ $elm$json$Json$Decode$list($elm$json$Json$Decode$string)),
7268
+ A2(
7269
+ $elm$json$Json$Decode$field,
7270
+ 'distributionReports',
7271
+ $elm$json$Json$Decode$list($mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDistributionReport)));
7272
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_distributionReports_ListDistributionReport_ = F6(
7273
+ function (labels, duration, logs, todos, failures, distributionReports) {
7274
+ return {distributionReports: distributionReports, duration: duration, failures: failures, labels: labels, logs: logs, todos: todos};
6081
7275
  });
6082
7276
  var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$Failure = F3(
6083
7277
  function (given, description, reason) {
@@ -6104,11 +7298,12 @@ var $elm_explorations$test$Test$Runner$Failure$ListDiff = F2(
6104
7298
  });
6105
7299
  var $elm_explorations$test$Test$Runner$Failure$TODO = {$: 'TODO'};
6106
7300
  var $elm_explorations$test$Test$Runner$Failure$BadDescription = {$: 'BadDescription'};
7301
+ var $elm_explorations$test$Test$Runner$Failure$DistributionBug = {$: 'DistributionBug'};
7302
+ var $elm_explorations$test$Test$Runner$Failure$DistributionInsufficient = {$: 'DistributionInsufficient'};
6107
7303
  var $elm_explorations$test$Test$Runner$Failure$DuplicatedName = {$: 'DuplicatedName'};
6108
7304
  var $elm_explorations$test$Test$Runner$Failure$EmptyList = {$: 'EmptyList'};
6109
7305
  var $elm_explorations$test$Test$Runner$Failure$InvalidFuzzer = {$: 'InvalidFuzzer'};
6110
7306
  var $elm_explorations$test$Test$Runner$Failure$NonpositiveFuzzCount = {$: 'NonpositiveFuzzCount'};
6111
- var $elm$json$Json$Decode$fail = _Json_fail;
6112
7307
  var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeInvalidReason = function () {
6113
7308
  var recover = function (x) {
6114
7309
  switch (x) {
@@ -6122,6 +7317,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeInvalidReason = func
6122
7317
  return $elm$json$Json$Decode$succeed($elm_explorations$test$Test$Runner$Failure$BadDescription);
6123
7318
  case 'DuplicatedName':
6124
7319
  return $elm$json$Json$Decode$succeed($elm_explorations$test$Test$Runner$Failure$DuplicatedName);
7320
+ case 'DistributionInsufficient':
7321
+ return $elm$json$Json$Decode$succeed($elm_explorations$test$Test$Runner$Failure$DistributionInsufficient);
7322
+ case 'DistributionBug':
7323
+ return $elm$json$Json$Decode$succeed($elm_explorations$test$Test$Runner$Failure$DistributionBug);
6125
7324
  default:
6126
7325
  var other = x;
6127
7326
  return $elm$json$Json$Decode$fail('Unknown constructor for type InvalidReason: ' + other);
@@ -6133,7 +7332,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$Record_expected_String_act
6133
7332
  function (expected, actual, extra, missing) {
6134
7333
  return {actual: actual, expected: expected, extra: extra, missing: missing};
6135
7334
  });
6136
- var $elm$json$Json$Decode$map4 = _Json_map4;
6137
7335
  var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeRecord_expected_String_actual_String_extra_ListString_missing_ListString_ = A5(
6138
7336
  $elm$json$Json$Decode$map4,
6139
7337
  $mpizenberg$elm_test_runner$ElmTestRunner$Failure$Record_expected_String_actual_String_extra_ListString_missing_ListString_,
@@ -6147,8 +7345,6 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeRecord_expected_Stri
6147
7345
  $elm$json$Json$Decode$field,
6148
7346
  'missing',
6149
7347
  $elm$json$Json$Decode$list($elm$json$Json$Decode$string)));
6150
- var $elm$json$Json$Decode$map = _Json_map1;
6151
- var $elm$json$Json$Decode$map2 = _Json_map2;
6152
7348
  var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeReasonHelp = function (constructor) {
6153
7349
  switch (constructor) {
6154
7350
  case 'Custom':
@@ -6198,6 +7394,7 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeReason = A2(
6198
7394
  $elm$json$Json$Decode$andThen,
6199
7395
  $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeReasonHelp,
6200
7396
  A2($elm$json$Json$Decode$field, 'Constructor', $elm$json$Json$Decode$string));
7397
+ var $elm$json$Json$Decode$map3 = _Json_map3;
6201
7398
  var $elm$json$Json$Decode$oneOf = _Json_oneOf;
6202
7399
  var $elm$json$Json$Decode$maybe = function (decoder) {
6203
7400
  return $elm$json$Json$Decode$oneOf(
@@ -6218,10 +7415,10 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeFailure = A4(
6218
7415
  A2($elm$json$Json$Decode$field, 'reason', $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeReason));
6219
7416
  var $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decoder = $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decodeFailure;
6220
7417
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeFailure = $mpizenberg$elm_test_runner$ElmTestRunner$Failure$decoder;
6221
- var $elm$json$Json$Decode$map5 = _Json_map5;
6222
- var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_ = A6(
6223
- $elm$json$Json$Decode$map5,
6224
- $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_,
7418
+ var $elm$json$Json$Decode$map6 = _Json_map6;
7419
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_distributionReports_ListDistributionReport_ = A7(
7420
+ $elm$json$Json$Decode$map6,
7421
+ $mpizenberg$elm_test_runner$ElmTestRunner$Result$Record_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_distributionReports_ListDistributionReport_,
6225
7422
  A2(
6226
7423
  $elm$json$Json$Decode$field,
6227
7424
  'labels',
@@ -6238,19 +7435,23 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListStr
6238
7435
  A2(
6239
7436
  $elm$json$Json$Decode$field,
6240
7437
  'failures',
6241
- $elm$json$Json$Decode$list($mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeFailure)));
7438
+ $elm$json$Json$Decode$list($mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeFailure)),
7439
+ A2(
7440
+ $elm$json$Json$Decode$field,
7441
+ 'distributionReports',
7442
+ $elm$json$Json$Decode$list($mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeDistributionReport)));
6242
7443
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeTestResultHelp = function (constructor) {
6243
7444
  switch (constructor) {
6244
7445
  case 'Passed':
6245
7446
  return A2(
6246
7447
  $elm$json$Json$Decode$map,
6247
7448
  $mpizenberg$elm_test_runner$ElmTestRunner$Result$Passed,
6248
- A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_));
7449
+ A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_distributionReports_ListDistributionReport_));
6249
7450
  case 'Failed':
6250
7451
  return A2(
6251
7452
  $elm$json$Json$Decode$map,
6252
7453
  $mpizenberg$elm_test_runner$ElmTestRunner$Result$Failed,
6253
- A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_));
7454
+ A2($elm$json$Json$Decode$field, 'A1', $mpizenberg$elm_test_runner$ElmTestRunner$Result$decodeRecord_labels_ListString_duration_Float_logs_ListString_todos_ListString_failures_ListFailure_distributionReports_ListDistributionReport_));
6254
7455
  default:
6255
7456
  var other = constructor;
6256
7457
  return $elm$json$Json$Decode$fail('Unknown constructor for type TestResult: ' + other);
@@ -6364,8 +7565,8 @@ var $elm$core$String$dropLeft = F2(
6364
7565
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$errorCode = F2(
6365
7566
  function (kindResult, testResults) {
6366
7567
  var _v0 = $mpizenberg$elm_test_runner$ElmTestRunner$Result$summary(testResults);
6367
- var todoCount = _v0.todoCount;
6368
7568
  var failedCount = _v0.failedCount;
7569
+ var todoCount = _v0.todoCount;
6369
7570
  return $elm$core$Array$isEmpty(testResults) ? 2 : ((_Utils_eq(
6370
7571
  kindResult,
6371
7572
  $elm$core$Result$Ok($mpizenberg$elm_test_runner$ElmTestRunner$SeededRunners$Plain)) && (!(failedCount + todoCount))) ? 0 : 2);
@@ -6492,33 +7693,37 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$reportAndThenSummarize =
6492
7693
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$setDuration = F2(
6493
7694
  function (duration, testResult) {
6494
7695
  if (testResult.$ === 'Passed') {
6495
- var logs = testResult.a.logs;
6496
7696
  var labels = testResult.a.labels;
7697
+ var logs = testResult.a.logs;
7698
+ var distributionReports = testResult.a.distributionReports;
6497
7699
  return $mpizenberg$elm_test_runner$ElmTestRunner$Result$Passed(
6498
- {duration: duration, labels: labels, logs: logs});
7700
+ {distributionReports: distributionReports, duration: duration, labels: labels, logs: logs});
6499
7701
  } else {
6500
- var failures = testResult.a.failures;
6501
- var todos = testResult.a.todos;
6502
- var logs = testResult.a.logs;
6503
7702
  var labels = testResult.a.labels;
7703
+ var logs = testResult.a.logs;
7704
+ var todos = testResult.a.todos;
7705
+ var failures = testResult.a.failures;
7706
+ var distributionReports = testResult.a.distributionReports;
6504
7707
  return $mpizenberg$elm_test_runner$ElmTestRunner$Result$Failed(
6505
- {duration: duration, failures: failures, labels: labels, logs: logs, todos: todos});
7708
+ {distributionReports: distributionReports, duration: duration, failures: failures, labels: labels, logs: logs, todos: todos});
6506
7709
  }
6507
7710
  });
6508
7711
  var $mpizenberg$elm_test_runner$ElmTestRunner$Result$setLogs = F2(
6509
7712
  function (logs, testResult) {
6510
7713
  if (testResult.$ === 'Passed') {
6511
- var duration = testResult.a.duration;
6512
7714
  var labels = testResult.a.labels;
7715
+ var duration = testResult.a.duration;
7716
+ var distributionReports = testResult.a.distributionReports;
6513
7717
  return $mpizenberg$elm_test_runner$ElmTestRunner$Result$Passed(
6514
- {duration: duration, labels: labels, logs: logs});
7718
+ {distributionReports: distributionReports, duration: duration, labels: labels, logs: logs});
6515
7719
  } else {
6516
- var failures = testResult.a.failures;
6517
- var todos = testResult.a.todos;
6518
- var duration = testResult.a.duration;
6519
7720
  var labels = testResult.a.labels;
7721
+ var duration = testResult.a.duration;
7722
+ var todos = testResult.a.todos;
7723
+ var failures = testResult.a.failures;
7724
+ var distributionReports = testResult.a.distributionReports;
6520
7725
  return $mpizenberg$elm_test_runner$ElmTestRunner$Result$Failed(
6521
- {duration: duration, failures: failures, labels: labels, logs: logs, todos: todos});
7726
+ {distributionReports: distributionReports, duration: duration, failures: failures, labels: labels, logs: logs, todos: todos});
6522
7727
  }
6523
7728
  });
6524
7729
  var $elm$core$String$startsWith = _String_startsWith;
@@ -6550,8 +7755,8 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$update = F2(
6550
7755
  function (msg, model) {
6551
7756
  switch (msg.$) {
6552
7757
  case 'Restart':
6553
- var testsCount = msg.a.testsCount;
6554
7758
  var kind = msg.a.kind;
7759
+ var testsCount = msg.a.testsCount;
6555
7760
  return A2($elm$core$String$startsWith, 'Invalid', kind) ? _Utils_Tuple2(
6556
7761
  _Utils_update(
6557
7762
  model,
@@ -6577,9 +7782,9 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$update = F2(
6577
7782
  model.ports.stdout,
6578
7783
  model.reporter.onBegin(testsCount))));
6579
7784
  case 'IncomingResult':
6580
- var logs = msg.a.logs;
6581
- var result = msg.a.result;
6582
7785
  var duration = msg.a.duration;
7786
+ var result = msg.a.result;
7787
+ var logs = msg.a.logs;
6583
7788
  var testResultResult = A2(
6584
7789
  $elm$core$Result$map,
6585
7790
  A2(
@@ -6636,8 +7841,8 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$update = F2(
6636
7841
  });
6637
7842
  var $elm$core$Platform$worker = _Platform_worker;
6638
7843
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$worker = function (ports) {
6639
- var incomingResult = ports.incomingResult;
6640
7844
  var restart = ports.restart;
7845
+ var incomingResult = ports.incomingResult;
6641
7846
  return $elm$core$Platform$worker(
6642
7847
  {
6643
7848
  init: $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$init(ports),
@@ -6692,104 +7897,4 @@ _Platform_export({'Reporter':{'init':$author$project$Reporter$main(
6692
7897
  'paths',
6693
7898
  $elm$json$Json$Decode$list($elm$json$Json$Decode$string)));
6694
7899
  },
6695
- A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
6696
-
6697
- function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
6698
- {
6699
- var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));
6700
-
6701
- // @TODO need to figure out how to get this to automatically escape by mode?
6702
- //$elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);
6703
- $elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);
6704
-
6705
- var managers = {};
6706
- var initPair = init(result.a);
6707
- var model = (args && args['model']) || initPair.a;
6708
-
6709
- var stepper = stepperBuilder(sendToApp, model);
6710
- var ports = _Platform_setupEffects(managers, sendToApp);
6711
-
6712
- var pos = 0;
6713
-
6714
- //console.log('managers', managers)
6715
- //console.log('ports', ports)
6716
-
6717
- var dead = false;
6718
- var upgradeMode = false;
6719
-
6720
- function mtime() { // microseconds
6721
- if (!isBackend) { return 0; }
6722
- const hrTime = process.hrtime();
6723
- return Math.floor(hrTime[0] * 1000000 + hrTime[1] / 1000);
6724
- }
6725
-
6726
- function sendToApp(msg, viewMetadata)
6727
- {
6728
- if(dead){ return }
6729
- if (upgradeMode) {
6730
- // console.log('sendToApp.inactive',msg);
6731
- // No more messages should run in upgrade mode
6732
- // @TODO redirect messages somewhere
6733
- _Platform_enqueueEffects(managers, $elm$core$Platform$Cmd$none, $elm$core$Platform$Sub$none);
6734
- return;
6735
- }
6736
- //console.log('sendToApp.active',msg);
6737
-
6738
-
6739
-
6740
- var serializeDuration, logDuration = null;
6741
- var start = mtime();
6742
-
6743
- try {
6744
- var pair = A2(update, msg, model);
6745
- } catch(err) {
6746
- if (isBackend) { bugsnag.notify(err); }
6747
- return;
6748
- }
6749
-
6750
- const updateDuration = mtime() - start;
6751
- start = mtime();
6752
-
6753
- if (isBackend && loggingEnabled) {
6754
- pos = pos + 1;
6755
- const s = $author$project$LBR$serialize(msg);
6756
- serializeDuration = mtime() - start;
6757
- start = mtime();
6758
- insertEvent(pos, global.config.version, s.a, updateDuration, serializeDuration, A2($elm$core$Maybe$withDefault, null, s.b));
6759
- logDuration = mtime() - start;
6760
- }
6761
-
6762
- // console.log(`model size: ${global.sizeof(pair.a)}`);
6763
- // console.log(pair.a);
6764
-
6765
- stepper(model = pair.a, viewMetadata);
6766
- //console.log('cmds', pair.b);
6767
- _Platform_enqueueEffects(managers, pair.b, subscriptions(model));
6768
-
6769
- const stepEnqueueDuration = mtime() - start;
6770
-
6771
- if (isBackend) {
6772
- //console.log({serialize: serializeDuration, log: logDuration, update: updateDuration, stepEnqueue: stepEnqueueDuration})
6773
- }
6774
- }
6775
-
6776
- if ((args && args['model']) === undefined) {
6777
- _Platform_enqueueEffects(managers, initPair.b, subscriptions(model));
6778
- }
6779
-
6780
- var fns = {}
6781
-
6782
- const die = function() {
6783
- //console.log('App dying');
6784
- managers = null;
6785
- model = null;
6786
- stepper = null;
6787
- ports = null;
6788
- }
6789
-
6790
- return ports ? { ports: ports, gm: function() { return model }, eum: function() { upgradeMode = true }, die: die, fns: fns } : {};
6791
- }}(this));
6792
- const pkgExports = {
6793
-
6794
- }
6795
- if (typeof window !== 'undefined') { window.elmPkgJsInit = function(app) { for (var pkgId in pkgExports) { if (pkgExports.hasOwnProperty(pkgId)) { pkgExports[pkgId]({}).init(app) } } }}
7900
+ A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});}(this));