elm-pages 3.0.0-beta.3 → 3.0.0-beta.30

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 (123) hide show
  1. package/README.md +10 -1
  2. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2864 -2589
  3. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +15295 -13271
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  13. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  14. package/generator/dead-code-review/elm.json +8 -6
  15. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +59 -10
  16. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +52 -36
  17. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  18. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  20. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  21. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
  22. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +14621 -12637
  23. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  24. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  25. package/generator/review/elm.json +8 -8
  26. package/generator/src/RouteBuilder.elm +113 -107
  27. package/generator/src/SharedTemplate.elm +3 -2
  28. package/generator/src/SiteConfig.elm +3 -2
  29. package/generator/src/basepath-middleware.js +3 -3
  30. package/generator/src/build.js +123 -87
  31. package/generator/src/cli.js +256 -77
  32. package/generator/src/codegen.js +29 -27
  33. package/generator/src/compatibility-key.js +3 -0
  34. package/generator/src/compile-elm.js +25 -25
  35. package/generator/src/config.js +39 -0
  36. package/generator/src/copy-dir.js +2 -2
  37. package/generator/src/dev-server.js +150 -133
  38. package/generator/src/dir-helpers.js +9 -26
  39. package/generator/src/elm-codegen.js +5 -4
  40. package/generator/src/elm-file-constants.js +2 -3
  41. package/generator/src/error-formatter.js +12 -11
  42. package/generator/src/file-helpers.js +3 -4
  43. package/generator/src/generate-template-module-connector.js +23 -22
  44. package/generator/src/init.js +9 -8
  45. package/generator/src/pre-render-html.js +39 -28
  46. package/generator/src/render-test.js +109 -0
  47. package/generator/src/render-worker.js +25 -28
  48. package/generator/src/render.js +322 -142
  49. package/generator/src/request-cache.js +252 -163
  50. package/generator/src/rewrite-client-elm-json.js +5 -5
  51. package/generator/src/rewrite-elm-json.js +7 -7
  52. package/generator/src/route-codegen-helpers.js +16 -31
  53. package/generator/src/seo-renderer.js +12 -7
  54. package/generator/src/vite-utils.js +77 -0
  55. package/generator/static-code/hmr.js +79 -13
  56. package/generator/template/app/Api.elm +6 -5
  57. package/generator/template/app/Effect.elm +123 -0
  58. package/generator/template/app/ErrorPage.elm +37 -6
  59. package/generator/template/app/Route/Index.elm +17 -10
  60. package/generator/template/app/Shared.elm +24 -47
  61. package/generator/template/app/Site.elm +19 -6
  62. package/generator/template/app/View.elm +1 -8
  63. package/generator/template/elm-tooling.json +0 -3
  64. package/generator/template/elm.json +34 -25
  65. package/generator/template/package.json +10 -4
  66. package/package.json +23 -22
  67. package/src/ApiRoute.elm +199 -61
  68. package/src/BackendTask/Custom.elm +325 -0
  69. package/src/BackendTask/Env.elm +90 -0
  70. package/src/{DataSource → BackendTask}/File.elm +128 -43
  71. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  72. package/src/BackendTask/Http.elm +673 -0
  73. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  74. package/src/BackendTask/Internal/Request.elm +28 -0
  75. package/src/BackendTask/Random.elm +79 -0
  76. package/src/BackendTask/Time.elm +47 -0
  77. package/src/BackendTask.elm +537 -0
  78. package/src/FatalError.elm +89 -0
  79. package/src/Form/Field.elm +21 -9
  80. package/src/Form/FieldView.elm +94 -14
  81. package/src/Form.elm +275 -400
  82. package/src/Head.elm +237 -7
  83. package/src/HtmlPrinter.elm +7 -3
  84. package/src/Internal/ApiRoute.elm +7 -5
  85. package/src/PageServerResponse.elm +6 -1
  86. package/src/Pages/FormState.elm +6 -5
  87. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  88. package/src/Pages/Internal/FatalError.elm +5 -0
  89. package/src/Pages/Internal/Form.elm +21 -1
  90. package/src/Pages/{Msg.elm → Internal/Msg.elm} +26 -16
  91. package/src/Pages/Internal/Platform/Cli.elm +507 -763
  92. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  93. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  94. package/src/Pages/Internal/Platform/GeneratorApplication.elm +373 -0
  95. package/src/Pages/Internal/Platform/StaticResponses.elm +73 -270
  96. package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -7
  97. package/src/Pages/Internal/Platform.elm +215 -102
  98. package/src/Pages/Internal/Script.elm +17 -0
  99. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  100. package/src/Pages/Manifest.elm +29 -4
  101. package/src/Pages/PageUrl.elm +23 -9
  102. package/src/Pages/ProgramConfig.elm +14 -10
  103. package/src/Pages/Script.elm +109 -0
  104. package/src/Pages/SiteConfig.elm +3 -2
  105. package/src/Pages/StaticHttp/Request.elm +2 -2
  106. package/src/Pages/StaticHttpRequest.elm +23 -98
  107. package/src/PagesMsg.elm +92 -0
  108. package/src/Path.elm +16 -19
  109. package/src/QueryParams.elm +21 -172
  110. package/src/RequestsAndPending.elm +8 -19
  111. package/src/Result/Extra.elm +26 -0
  112. package/src/Scaffold/Form.elm +484 -0
  113. package/src/Scaffold/Route.elm +1376 -0
  114. package/src/Server/Request.elm +43 -37
  115. package/src/Server/Session.elm +34 -34
  116. package/src/Server/SetCookie.elm +1 -1
  117. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  118. package/src/DataSource/Env.elm +0 -38
  119. package/src/DataSource/Http.elm +0 -446
  120. package/src/DataSource/Internal/Request.elm +0 -20
  121. package/src/DataSource/Port.elm +0 -90
  122. package/src/DataSource.elm +0 -538
  123. package/src/Pages/Generate.elm +0 -800
@@ -3647,26 +3647,982 @@ 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$List$filter = F2(
3651
+ function (isGood, list) {
3652
+ return A3(
3653
+ $elm$core$List$foldr,
3654
+ F2(
3655
+ function (x, xs) {
3656
+ return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;
3657
+ }),
3658
+ _List_Nil,
3659
+ list);
3660
+ });
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;
3664
+ var $elm$core$String$cons = _String_cons;
3665
+ var $elm$core$String$fromChar = function (_char) {
3666
+ return A2($elm$core$String$cons, _char, '');
3667
+ };
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);
3710
+ });
3711
+ var $elm$core$List$repeatHelp = F3(
3712
+ function (result, n, value) {
3713
+ repeatHelp:
3714
+ while (true) {
3715
+ if (n <= 0) {
3716
+ return result;
3717
+ } else {
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;
3725
+ }
3726
+ }
3727
+ });
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;
3735
+ } else {
3736
+ var x = listOfLists.a;
3737
+ return $elm$core$List$length(x);
3738
+ }
3739
+ };
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:
3852
+ while (true) {
3853
+ if (!list.b) {
3854
+ return false;
3855
+ } else {
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
+ }
3867
+ }
3868
+ }
3869
+ });
3870
+ var $elm$core$Set$Set_elm_builtin = function (a) {
3871
+ return {$: 'Set_elm_builtin', a: a};
3872
+ };
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
+ }
3897
+ });
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
+ }
3910
+ };
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
+ }
3984
+ };
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
+ };
3650
4618
  var $elm$core$Basics$composeL = F3(
3651
4619
  function (g, f, x) {
3652
4620
  return g(
3653
4621
  f(x));
3654
4622
  });
3655
- var $elm$core$List$filter = F2(
3656
- function (isGood, list) {
3657
- return A3(
3658
- $elm$core$List$foldr,
3659
- F2(
3660
- function (x, xs) {
3661
- return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;
3662
- }),
3663
- _List_Nil,
3664
- list);
3665
- });
3666
4623
  var $elm$core$String$isEmpty = function (string) {
3667
4624
  return string === '';
3668
4625
  };
3669
- var $elm$core$Basics$not = _Basics_not;
3670
4626
  var $elm_explorations$test$Test$Runner$formatLabels = F3(
3671
4627
  function (formatDescription, formatTest, labels) {
3672
4628
  var _v0 = A2(
@@ -3685,10 +4641,6 @@ var $elm_explorations$test$Test$Runner$formatLabels = F3(
3685
4641
  A2($elm$core$List$map, formatDescription, descriptions)));
3686
4642
  }
3687
4643
  });
3688
- var $elm$core$String$cons = _String_cons;
3689
- var $elm$core$String$fromChar = function (_char) {
3690
- return A2($elm$core$String$cons, _char, '');
3691
- };
3692
4644
  var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar = F2(
3693
4645
  function (icon, str) {
3694
4646
  return $elm$core$String$fromChar(icon) + (' ' + (str + '\n'));
@@ -3708,6 +4660,24 @@ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureLabel
3708
4660
  $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$withChar(
3709
4661
  _Utils_chr('✗')))),
3710
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
+ });
3711
4681
  var $elm$core$Basics$always = F2(
3712
4682
  function (a, _v0) {
3713
4683
  return a;
@@ -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);
@@ -4564,8 +5510,8 @@ 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) {
5513
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$ConsoleColor$failureToText = F3(
5514
+ function (useColor, _v0, distributionReport) {
4569
5515
  var reason = _v0.reason;
4570
5516
  var description = _v0.description;
4571
5517
  var given = _v0.given;
@@ -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,11 +5578,41 @@ 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 distributionReports = testResult.a.distributionReports;
5600
+ var labels = testResult.a.labels;
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 {
5615
+ var distributionReports = testResult.a.distributionReports;
4629
5616
  var logs = testResult.a.logs;
4630
5617
  var failures = testResult.a.failures;
4631
5618
  var todos = testResult.a.todos;
@@ -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)
@@ -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,6 +6054,7 @@ 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 {
6057
+ var distributionReports = result.a.distributionReports;
5065
6058
  var logs = result.a.logs;
5066
6059
  var failures = result.a.failures;
5067
6060
  var todos = result.a.todos;
@@ -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
  };
@@ -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;
@@ -5273,6 +6248,7 @@ 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 {
6251
+ var distributionReports = testResult.a.distributionReports;
5276
6252
  var logs = testResult.a.logs;
5277
6253
  var todos = testResult.a.todos;
5278
6254
  var failures = testResult.a.failures;
@@ -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 () {
@@ -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(
@@ -5561,7 +6627,7 @@ 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) {
6630
+ var $mpizenberg$elm_test_runner$ElmTestRunner$Reporter$Json$encodeFailure = function (_v0) {
5565
6631
  var reason = _v0.reason;
5566
6632
  var description = _v0.description;
5567
6633
  var given = _v0.given;
@@ -5585,33 +6651,39 @@ 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') {
6654
+ var distributionReports = result.a.distributionReports;
5588
6655
  var duration = result.a.duration;
5589
6656
  var labels = result.a.labels;
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 {
6665
+ var distributionReports = result.a.distributionReports;
5597
6666
  var failures = result.a.failures;
5598
6667
  var todos = result.a.todos;
5599
6668
  var duration = result.a.duration;
5600
6669
  var labels = result.a.labels;
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
6685
  var testDuration = _v0.testDuration;
6686
+ var testDistributionReports = _v0.testDistributionReports;
5615
6687
  var testFailures = _v0.testFailures;
5616
6688
  var testLabels = _v0.testLabels;
5617
6689
  var status = _v0.status;
@@ -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.$) {
@@ -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,7 +6990,7 @@ 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
  };
@@ -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);
@@ -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') {
7696
+ var distributionReports = testResult.a.distributionReports;
6495
7697
  var logs = testResult.a.logs;
6496
7698
  var labels = testResult.a.labels;
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 {
7702
+ var distributionReports = testResult.a.distributionReports;
6500
7703
  var failures = testResult.a.failures;
6501
7704
  var todos = testResult.a.todos;
6502
7705
  var logs = testResult.a.logs;
6503
7706
  var labels = testResult.a.labels;
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') {
7714
+ var distributionReports = testResult.a.distributionReports;
6511
7715
  var duration = testResult.a.duration;
6512
7716
  var labels = testResult.a.labels;
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 {
7720
+ var distributionReports = testResult.a.distributionReports;
6516
7721
  var failures = testResult.a.failures;
6517
7722
  var todos = testResult.a.todos;
6518
7723
  var duration = testResult.a.duration;
6519
7724
  var labels = testResult.a.labels;
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;
@@ -6692,7 +7897,7 @@ _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'
7900
+ A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
6696
7901
 
6697
7902
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
6698
7903
  {