@temperlang/std 0.0.6 → 0.2.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.
package/testing.js CHANGED
@@ -1,33 +1,35 @@
1
1
  import {
2
- listBuilderAdd as listBuilderAdd_0, listBuilderToList as listBuilderToList_1, listJoin as listJoin_2, listify as listify_3, pairConstructor as pairConstructor_4, listMap as listMap_5, ltGeneric as ltGeneric_6, listGet as listGet_7, globalConsole as vGlobalConsole__45_8, strCat as strCat_9, bubbleException as bubbleException__65
2
+ globalConsole as globalConsole__230, listBuilderToList as listBuilderToList_245, pairConstructor as pairConstructor_273, listMap as listMap_274, listBuilderAdd as listBuilderAdd_118, listJoin as listJoin_97, listify as listify_67, listGet as listGet_157, strCat as strCat_127
3
3
  } from "@temperlang/core";
4
4
  import {
5
- strict as strict__19
5
+ strict as strict__241
6
6
  } from "assert";
7
+ /** @type {Console_231} */
8
+ const console_229 = globalConsole__230;
7
9
  export class Test {
8
10
  /**
9
- * @param {boolean} success_11
10
- * @param {() => string} message_12
11
+ * @param {boolean} success_233
12
+ * @param {() => string} message_234
11
13
  */
12
- assert(success_11, message_12) {
13
- if (! success_11) {
14
- this.#_passing_13 = false;
15
- listBuilderAdd_0(this.#_messages_14, message_12());
14
+ assert(success_233, message_234) {
15
+ if (! success_233) {
16
+ this.#_passing_235 = false;
17
+ listBuilderAdd_118(this.#_messages_236, message_234());
16
18
  } else {
17
19
  void 0;
18
20
  }
19
21
  return;
20
22
  }
21
23
  /**
22
- * @param {boolean} success_16
23
- * @param {() => string} message_17
24
+ * @param {boolean} success_238
25
+ * @param {() => string} message_239
24
26
  * @returns {void}
25
27
  */
26
- assertHard(success_16, message_17) {
27
- this.assert(success_16, message_17);
28
- if (! success_16) {
29
- this.#_failedOnAssert_18 = true;
30
- strict__19.fail(this.messagesCombined());
28
+ assertHard(success_238, message_239) {
29
+ this.assert(success_238, message_239);
30
+ if (! success_238) {
31
+ this.#_failedOnAssert_240 = true;
32
+ strict__241.fail(this.messagesCombined());
31
33
  } else {
32
34
  void 0;
33
35
  }
@@ -36,194 +38,186 @@ export class Test {
36
38
  /** @returns {void} */
37
39
  softFailToHard() {
38
40
  if (this.hasUnhandledFail) {
39
- this.#_failedOnAssert_18 = true;
40
- strict__19.fail(this.messagesCombined());
41
+ this.#_failedOnAssert_240 = true;
42
+ strict__241.fail(this.messagesCombined());
41
43
  } else {
42
44
  void 0;
43
45
  }
44
46
  return;
45
47
  }
46
- /** @type {boolean} */
47
- #passing_21;
48
48
  /** @returns {boolean} */
49
49
  get passing() {
50
- return this.#_passing_13;
50
+ return this.#_passing_235;
51
51
  }
52
52
  /** @returns {Array<string>} */
53
53
  messages() {
54
- return listBuilderToList_1(this.#_messages_14);
54
+ return listBuilderToList_245(this.#_messages_236);
55
55
  }
56
- /** @type {boolean} */
57
- #failedOnAssert_24;
58
56
  /** @returns {boolean} */
59
57
  get failedOnAssert() {
60
- return this.#_failedOnAssert_18;
58
+ return this.#_failedOnAssert_240;
61
59
  }
62
- /** @type {boolean} */
63
- #hasUnhandledFail_26;
64
60
  /** @returns {boolean} */
65
61
  get hasUnhandledFail() {
66
- let t_28;
67
- if (this.#_failedOnAssert_18) {
68
- t_28 = true;
62
+ let t_248;
63
+ if (this.#_failedOnAssert_240) {
64
+ t_248 = true;
69
65
  } else {
70
- t_28 = this.#_passing_13;
66
+ t_248 = this.#_passing_235;
71
67
  }
72
- return ! t_28;
68
+ return ! t_248;
73
69
  }
74
70
  /** @returns {string | null} */
75
71
  messagesCombined() {
76
- let return_30;
77
- let t_31;
78
- let t_32;
79
- if (! this.#_messages_14.length) {
80
- return_30 = null;
72
+ let return_250;
73
+ let t_251;
74
+ let t_252;
75
+ if (! this.#_messages_236.length) {
76
+ return_250 = null;
81
77
  } else {
82
- t_31 = this.#_messages_14;
83
- function fn_33(it_34) {
84
- return it_34;
78
+ t_251 = this.#_messages_236;
79
+ function fn_253(it_254) {
80
+ return it_254;
85
81
  }
86
- t_32 = listJoin_2(t_31, ", ", fn_33);
87
- return_30 = t_32;
82
+ t_252 = listJoin_97(t_251, ", ", fn_253);
83
+ return_250 = t_252;
88
84
  }
89
- return return_30;
85
+ return return_250;
90
86
  }
91
87
  /** @type {boolean} */
92
- #_failedOnAssert_18;
88
+ #_failedOnAssert_240;
93
89
  /** @type {boolean} */
94
- #_passing_13;
90
+ #_passing_235;
95
91
  /** @type {Array<string>} */
96
- #_messages_14;
92
+ #_messages_236;
97
93
  /**
98
- * @param {boolean} _failedOnAssert_35
99
- * @param {boolean} _passing_36
100
- * @param {Array<string>} _messages_37
94
+ * @param {boolean} _failedOnAssert_255
95
+ * @param {boolean} _passing_256
96
+ * @param {Array<string>} _messages_257
101
97
  */
102
- constructor(_failedOnAssert_35, _passing_36, _messages_37) {
103
- let t_38;
104
- if (!(_failedOnAssert_35 !== void 0)) {
105
- _failedOnAssert_35 = false;
98
+ constructor(_failedOnAssert_255, _passing_256, _messages_257) {
99
+ let t_258;
100
+ if (!(_failedOnAssert_255 !== void 0)) {
101
+ _failedOnAssert_255 = false;
106
102
  }
107
- if (!(_passing_36 !== void 0)) {
108
- _passing_36 = true;
103
+ if (!(_passing_256 !== void 0)) {
104
+ _passing_256 = true;
109
105
  }
110
- if (!(_messages_37 !== void 0)) {
111
- t_38 = [];
112
- _messages_37 = t_38;
106
+ if (!(_messages_257 !== void 0)) {
107
+ t_258 = [];
108
+ _messages_257 = t_258;
113
109
  }
114
- this.#_failedOnAssert_18 = _failedOnAssert_35;
115
- this.#_passing_13 = _passing_36;
116
- this.#_messages_14 = _messages_37;
110
+ this.#_failedOnAssert_240 = _failedOnAssert_255;
111
+ this.#_passing_235 = _passing_256;
112
+ this.#_messages_236 = _messages_257;
117
113
  return;
118
114
  }
119
115
  };
120
- /** @type {Type_39} */
116
+ /** @type {Type_259} */
121
117
  export const TestName = "String: Type";
122
- /** @type {Type_39} */
118
+ /** @type {Type_259} */
123
119
  export const TestFun = "fn (Test): (Void | Bubble): Type";
124
- /** @type {Type_39} */
120
+ /** @type {Type_259} */
125
121
  export const TestCase = "Pair\u003cString, fn (Test): (Void | Bubble)\u003e: Type";
126
- /** @type {Type_39} */
122
+ /** @type {Type_259} */
127
123
  export const TestFailureMessage = "String: Type";
128
- /** @type {Type_39} */
124
+ /** @type {Type_259} */
129
125
  export const TestResult = "Pair\u003cString, List\u003cString\u003e\u003e: Type";
130
126
  /**
131
- * @param {Array<Pair_53<string, (arg0: Test) => void>>} testCases_40
132
- * @returns {Array<Pair_53<string, Array<string>>>}
127
+ * @param {Array<Pair_275<string, (arg0: Test) => void>>} testCases_260
128
+ * @returns {Array<Pair_275<string, Array<string>>>}
133
129
  */
134
- export function processTestCases(testCases_40) {
135
- function fn_41(testCase_42) {
136
- let t_43;
137
- let t_44;
138
- let t_45;
139
- const key_46 = testCase_42.key;
140
- const fun_47 = testCase_42.value;
141
- const test_48 = new Test();
142
- let hadBubble_49;
130
+ export function processTestCases(testCases_260) {
131
+ function fn_261(testCase_262) {
132
+ let t_263;
133
+ let t_264;
134
+ let t_265;
135
+ const key_266 = testCase_262.key;
136
+ const fun_267 = testCase_262.value;
137
+ const test_268 = new Test();
138
+ let hadBubble_269;
143
139
  try {
144
- fun_47(test_48);
145
- hadBubble_49 = false;
140
+ fun_267(test_268);
141
+ hadBubble_269 = false;
146
142
  } catch {
147
- hadBubble_49 = true;
143
+ hadBubble_269 = true;
148
144
  }
149
- const messages_50 = test_48.messages();
150
- let failures_51;
151
- if (test_48.passing) {
152
- failures_51 = listify_3();
145
+ const messages_270 = test_268.messages();
146
+ let failures_271;
147
+ if (test_268.passing) {
148
+ failures_271 = listify_67();
153
149
  } else {
154
- if (hadBubble_49) {
155
- t_43 = test_48.failedOnAssert;
156
- t_45 = ! t_43;
150
+ if (hadBubble_269) {
151
+ t_263 = test_268.failedOnAssert;
152
+ t_265 = ! t_263;
157
153
  } else {
158
- t_45 = false;
154
+ t_265 = false;
159
155
  }
160
- if (t_45) {
161
- const allMessages_52 = messages_50.slice();
162
- {
163
- listBuilderAdd_0(allMessages_52, "Bubble");
164
- t_44 = listBuilderToList_1(allMessages_52);
165
- failures_51 = t_44;
166
- }
156
+ if (t_265) {
157
+ const allMessages_272 = messages_270.slice();
158
+ listBuilderAdd_118(allMessages_272, "Bubble");
159
+ t_264 = listBuilderToList_245(allMessages_272);
160
+ failures_271 = t_264;
167
161
  } else {
168
- failures_51 = messages_50;
162
+ failures_271 = messages_270;
169
163
  }
170
164
  }
171
- return pairConstructor_4(key_46, failures_51);
165
+ return pairConstructor_273(key_266, failures_271);
172
166
  }
173
- return listMap_5(testCases_40, fn_41);
167
+ return listMap_274(testCases_260, fn_261);
174
168
  };
175
- /** @param {Array<Pair_53<string, Array<string>>>} testResults_54 */
176
- export function reportTestResults(testResults_54) {
177
- let return_55;
178
- let t_56;
179
- let t_57;
180
- let i_58 = 0;
181
- s__1220_59: {
169
+ /** @param {Array<Pair_275<string, Array<string>>>} testResults_276 */
170
+ export function reportTestResults(testResults_276) {
171
+ let return_277;
172
+ let t_278;
173
+ let t_279;
174
+ let t_280;
175
+ let t_281;
176
+ let i_282 = 0;
177
+ s__1281_283: {
182
178
  while (true) {
183
- t_56 = testResults_54.length;
184
- if (ltGeneric_6(i_58, t_56)) {
179
+ t_278 = testResults_276.length;
180
+ if (i_282 < t_278) {
185
181
  try {
186
- t_57 = listGet_7(testResults_54, i_58);
182
+ t_281 = listGet_157(testResults_276, i_282);
187
183
  } catch {
188
184
  break;
189
185
  }
190
- const testResult_60 = t_57;
191
- const failureMessages_61 = testResult_60.value;
192
- if (! failureMessages_61.length) {
193
- vGlobalConsole__45_8.log(strCat_9(testResult_60.key, ": Passed"));
186
+ const testResult_284 = t_281;
187
+ const failureMessages_285 = testResult_284.value;
188
+ if (! failureMessages_285.length) {
189
+ t_280 = testResult_284.key;
190
+ console_229.log(strCat_127(t_280, ": Passed"));
194
191
  } else {
195
- function fn_62(it_63) {
196
- return it_63;
192
+ function fn_286(it_287) {
193
+ return it_287;
197
194
  }
198
- const message_64 = listJoin_2(failureMessages_61, ", ", fn_62);
199
- vGlobalConsole__45_8.log(strCat_9(testResult_60.key, ": Failed ", message_64));
195
+ const message_288 = listJoin_97(failureMessages_285, ", ", fn_286);
196
+ t_279 = testResult_284.key;
197
+ console_229.log(strCat_127(t_279, ": Failed ", message_288));
200
198
  }
201
- i_58 = i_58 + 1;
199
+ i_282 = i_282 + 1;
202
200
  } else {
203
- return_55 = void 0;
204
- break s__1220_59;
201
+ return_277 = void 0;
202
+ break s__1281_283;
205
203
  }
206
204
  }
207
- throw bubbleException__65;
205
+ throw Error();
208
206
  }
209
- return return_55;
207
+ return return_277;
210
208
  };
211
- /** @param {Array<Pair_53<string, (arg0: Test) => void>>} testCases_66 */
212
- export function runTestCases(testCases_66) {
213
- reportTestResults(processTestCases(testCases_66));
209
+ /** @param {Array<Pair_275<string, (arg0: Test) => void>>} testCases_289 */
210
+ export function runTestCases(testCases_289) {
211
+ reportTestResults(processTestCases(testCases_289));
214
212
  return;
215
213
  };
216
214
  /**
217
- * @param {(arg0: Test) => void} testFun_67
215
+ * @param {(arg0: Test) => void} testFun_290
218
216
  * @returns {void}
219
217
  */
220
- export function runTest(testFun_67) {
221
- let return_68;
222
- const test_69 = new Test();
223
- {
224
- testFun_67(test_69);
225
- test_69.softFailToHard();
226
- return_68 = void 0;
227
- }
228
- return return_68;
218
+ export function runTest(testFun_290) {
219
+ const test_291 = new Test();
220
+ testFun_290(test_291);
221
+ test_291.softFailToHard();
222
+ return;
229
223
  };
package/testing.js.map CHANGED
@@ -1 +1 @@
1
- { "version": 3, "file": "OUTPUT_ROOT/js/std/testing.js", "sources": [ "std/testing.temper.md" ], "sourcesContent": [ "# Temper test framework\n\n## Test instance\n\nWe currently convert assert and check macro calls into method calls on a `Test`\ninstance.\n\n export class Test {\n\nRecommended default Temper assert is soft, meaning that it records failures for\nreporting but doesn't immediately end test execution on a false value. This lets\nyou check multiple conditions more easily.\n\n @connected(\u0022Test::assert\u0022)\n public assert(success: Boolean, message: fn (): String): Void {\n if (!success) {\n _passing = false;\n _messages.add(message());\n }\n }\n\nTypical hard asserts that end the test on false condition also are available.\n\n @connected(\u0022Test::assertHard\u0022)\n public assertHard(\n success: Boolean,\n message: fn (): String,\n ): Void | Bubble {\n assert(success, message);\n if (!success) {\n // Attempt to distinguish assert fails from others.\n // Sadly, they can still orelse an assert failure, so this isn't\n // flawless.\n _failedOnAssert = true;\n bail();\n }\n }\n\nHarden and end current test on any pending failure if not previously hardened.\nBackends typically insert calls to this if needed, but you can also call it\nmanually at any desired point in your test.\n\n public softFailToHard(): Void | Bubble {\n if (hasUnhandledFail) {\n _failedOnAssert = true;\n bail();\n }\n }\n\nProvide a bailing `Bubble` method here that enables backends to customize\nmessage delivery on failure.\n\n @connected(\u0022Test::bail\u0022)\n bail(): Bubble {\n bubble()\n }\n\nYou can check the current passing state of the test at any time. A test is\ncurrently passing if all soft checks and hard asserts have been succesful.\n\nTODO Does this need to be function call syntax for macro purposes?\n\n @connected(\u0022Test::passing\u0022)\n public get passing(): Boolean { _passing }\n\nMessages access is presented as a function because it likely allocates. Also,\nmessages might be automatically constructed in some cases, so it's possibly\nunwise to depend on their exact formatting.\n\n @connected(\u0022Test::messages\u0022)\n public messages(): List\u003cString\u003e { _messages.toList() }\n\n### Backend helper methods\n\nAvoid using backend helper methods in user code. Their behavior might be\nunreliable on some backends and/or have high risk of changing in future releases\nof Temper.\n\n @connected(\u0022Test::failedOnAssert\u0022)\n public get failedOnAssert(): Boolean { _failedOnAssert }\n\nAdditional helper methods to simplify backend code generation in some contexts.\n\n public get hasUnhandledFail(): Boolean { !(_failedOnAssert || _passing) }\n\nSimple helper to get multiple messages combined for now. We probably want to do\nfancier things in the future, but this can simplify backends for now.\n\n public messagesCombined(): String | Null {\n if (_messages.isEmpty) {\n // Unexpected, but most backends can do something with null.\n null\n } else {\n _messages.join(\u0022, \u0022) { (it);; it }\n }\n }\n\n private var _failedOnAssert: Boolean = false;\n private var _passing: Boolean = true;\n private _messages: ListBuilder\u003cString\u003e = new ListBuilder\u003cString\u003e();\n }\n\n## Interpreter testing support\n\nNOTICE: Don't directly anything in this section. It just exists for the\nimplementation of testing within the interpreter.\n\n export let TestCase = Pair\u003cTestName, TestFun\u003e;\n export let TestFailureMessage = String;\n export let TestFun = fn (Test): Void | Bubble;\n export let TestName = String;\n export let TestResult = Pair\u003cTestName, List\u003cTestFailureMessage\u003e\u003e;\n\n @connected(\u0022::processTestCases\u0022)\n export let processTestCases(testCases: List\u003cTestCase\u003e): List\u003cTestResult\u003e {\n testCases.map { (testCase): TestResult;;\n let { key, value as fun } = testCase;\n let test = new Test();\n // Actually call the test.\n let hadBubble = do {\n fun(test);\n false\n } orelse true;\n // Now get the messages.\n let messages = test.messages();\n let failures: List\u003cTestFailureMessage\u003e = if (test.passing) {\n []\n } else if (hadBubble \u0026\u0026 !test.failedOnAssert) {\n // Despite having 1+ failure messages, we seem to have failed on some\n // Bubble separate from asserts, so add that on.\n let allMessages = messages.toListBuilder();\n allMessages.add(\u0022Bubble\u0022);\n allMessages.toList()\n } else {\n messages\n };\n // Package up with test name.\n new Pair(key, failures)\n }\n }\n\n @connected(\u0022::reportTestResults\u0022)\n export let reportTestResults(testResults: List\u003cTestResult\u003e): Void {\n // TODO Write as junit xml (or tap if we switch to that).\n for (var i = 0; i \u003c testResults.length; i += 1) {\n let testResult = testResults[i];\n let failureMessages = testResult.value;\n if (failureMessages.isEmpty) {\n console.log(\u0022\u0024{testResult.key}: Passed\u0022);\n } else {\n let message = failureMessages.join(\u0022, \u0022) { (it);; it };\n console.log(\u0022\u0024{testResult.key}: Failed \u0024{message}\u0022);\n }\n }\n }\n\n @connected(\u0022::runTestCases\u0022)\n export let runTestCases(testCases: List\u003cTestCase\u003e): Void {\n reportTestResults(processTestCases(testCases));\n }\n\nTODO Is this a better idea than inlining each case? We'd need to generate\n`fun testFunction() { runTest(originalFunctionAsCallback) }` or some such.\n\n export let runTest(testFun: TestFun): Void | Bubble {\n let test = new Test();\n testFun(test);\n test.softFailToHard();\n }\n" ], "names": [ "Test", "success", "message", "_passing", "_messages", "_failedOnAssert", "passing", "failedOnAssert", "hasUnhandledFail", "return", "fn", "it", "TestName", "TestFun", "TestCase", "TestFailureMessage", "TestResult", "processTestCases", "testCases", "testCase", "key", "fun", "test", "hadBubble", "messages", "failures", "allMessages", "reportTestResults", "testResults", "i", "testResult", "failureMessages", "runTestCases", "runTest", "testFun" ], "mappings": "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" }
1
+ { "version": 3, "file": "js/std/testing.js", "sources": [ "std/testing.temper.md" ], "sourcesContent": [ "# Temper test framework\n\n## Test instance\n\nWe currently convert assert and check macro calls into method calls on a `Test`\ninstance.\n\n export class Test {\n\nRecommended default Temper assert is soft, meaning that it records failures for\nreporting but doesn't immediately end test execution on a false value. This lets\nyou check multiple conditions more easily.\n\n @connected(\u0022Test::assert\u0022)\n public assert(success: Boolean, message: fn (): String): Void {\n if (!success) {\n _passing = false;\n _messages.add(message());\n }\n }\n\nTypical hard asserts that end the test on false condition also are available.\n\n @connected(\u0022Test::assertHard\u0022)\n public assertHard(\n success: Boolean,\n message: fn (): String,\n ): Void | Bubble {\n assert(success, message);\n if (!success) {\n // Attempt to distinguish assert fails from others.\n // Sadly, they can still orelse an assert failure, so this isn't\n // flawless.\n _failedOnAssert = true;\n bail();\n }\n }\n\nHarden and end current test on any pending failure if not previously hardened.\nBackends typically insert calls to this if needed, but you can also call it\nmanually at any desired point in your test.\n\n public softFailToHard(): Void | Bubble {\n if (hasUnhandledFail) {\n _failedOnAssert = true;\n bail();\n }\n }\n\nProvide a bailing `Bubble` method here that enables backends to customize\nmessage delivery on failure.\n\n @connected(\u0022Test::bail\u0022)\n bail(): Bubble {\n bubble()\n }\n\nYou can check the current passing state of the test at any time. A test is\ncurrently passing if all soft checks and hard asserts have been succesful.\n\nTODO Does this need to be function call syntax for macro purposes?\n\n @connected(\u0022Test::passing\u0022)\n public get passing(): Boolean { _passing }\n\nMessages access is presented as a function because it likely allocates. Also,\nmessages might be automatically constructed in some cases, so it's possibly\nunwise to depend on their exact formatting.\n\n @connected(\u0022Test::messages\u0022)\n public messages(): List\u003cString\u003e { _messages.toList() }\n\n### Backend helper methods\n\nAvoid using backend helper methods in user code. Their behavior might be\nunreliable on some backends and/or have high risk of changing in future releases\nof Temper.\n\n @connected(\u0022Test::failedOnAssert\u0022)\n public get failedOnAssert(): Boolean { _failedOnAssert }\n\nAdditional helper methods to simplify backend code generation in some contexts.\n\n public get hasUnhandledFail(): Boolean { !(_failedOnAssert || _passing) }\n\nSimple helper to get multiple messages combined for now. We probably want to do\nfancier things in the future, but this can simplify backends for now.\n\n public messagesCombined(): String | Null {\n if (_messages.isEmpty) {\n // Unexpected, but most backends can do something with null.\n null\n } else {\n _messages.join(\u0022, \u0022) { (it);; it }\n }\n }\n\n private var _failedOnAssert: Boolean = false;\n private var _passing: Boolean = true;\n private _messages: ListBuilder\u003cString\u003e = new ListBuilder\u003cString\u003e();\n }\n\n## Interpreter testing support\n\nNOTICE: Don't directly anything in this section. It just exists for the\nimplementation of testing within the interpreter.\n\n export let TestCase = Pair\u003cTestName, TestFun\u003e;\n export let TestFailureMessage = String;\n export let TestFun = fn (Test): Void | Bubble;\n export let TestName = String;\n export let TestResult = Pair\u003cTestName, List\u003cTestFailureMessage\u003e\u003e;\n\n @connected(\u0022::processTestCases\u0022)\n export let processTestCases(testCases: List\u003cTestCase\u003e): List\u003cTestResult\u003e {\n testCases.map { (testCase): TestResult;;\n let { key, value as fun } = testCase;\n let test = new Test();\n // Actually call the test.\n let hadBubble = do {\n fun(test);\n false\n } orelse true;\n // Now get the messages.\n let messages = test.messages();\n let failures: List\u003cTestFailureMessage\u003e = if (test.passing) {\n []\n } else if (hadBubble \u0026\u0026 !test.failedOnAssert) {\n // Despite having 1+ failure messages, we seem to have failed on some\n // Bubble separate from asserts, so add that on.\n let allMessages = messages.toListBuilder();\n allMessages.add(\u0022Bubble\u0022);\n allMessages.toList()\n } else {\n messages\n };\n // Package up with test name.\n new Pair(key, failures)\n }\n }\n\n @connected(\u0022::reportTestResults\u0022)\n export let reportTestResults(testResults: List\u003cTestResult\u003e): Void {\n // TODO Write as junit xml (or tap if we switch to that).\n for (var i = 0; i \u003c testResults.length; i += 1) {\n let testResult = testResults[i];\n let failureMessages = testResult.value;\n if (failureMessages.isEmpty) {\n console.log(\u0022\u0024{testResult.key}: Passed\u0022);\n } else {\n let message = failureMessages.join(\u0022, \u0022) { (it);; it };\n console.log(\u0022\u0024{testResult.key}: Failed \u0024{message}\u0022);\n }\n }\n }\n\n @connected(\u0022::runTestCases\u0022)\n export let runTestCases(testCases: List\u003cTestCase\u003e): Void {\n reportTestResults(processTestCases(testCases));\n }\n\nTODO Is this a better idea than inlining each case? We'd need to generate\n`fun testFunction() { runTest(originalFunctionAsCallback) }` or some such.\n\n export let runTest(testFun: TestFun): Void | Bubble {\n let test = new Test();\n testFun(test);\n test.softFailToHard();\n }\n" ], "names": [ "Test", "success", "message", "_passing", "_messages", "_failedOnAssert", "return", "fn", "it", "TestName", "TestFun", "TestCase", "TestFailureMessage", "TestResult", "processTestCases", "testCases", "testCase", "key", "fun", "test", "hadBubble", "messages", "failures", "allMessages", "reportTestResults", "testResults", "i", "testResult", "failureMessages", "runTestCases", "runTest", "testFun" ], "mappings": "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" }
package/config.js DELETED
@@ -1,26 +0,0 @@
1
- /** @type {string} */
2
- export const name = "std";
3
- /** @type {string} */
4
- export const version = "0.0.6";
5
- /** @type {string} */
6
- export const authors = "Temper Contributors";
7
- /** @type {string} */
8
- export const description = "Optional support library provided with Temper";
9
- /** @type {string} */
10
- export const homepage = "https://temperlang.dev/";
11
- /** @type {string} */
12
- export const license = "Apache-2.0";
13
- /** @type {string} */
14
- export const repository = "https://github.com/temperlang/temper";
15
- /** @type {string} */
16
- export const pyName = "temper-std";
17
- /** @type {string} */
18
- export const javaGroup = "dev.temperlang";
19
- /** @type {string} */
20
- export const javaArtifact = "temper-std";
21
- /** @type {string} */
22
- export const javaPackage = "temper.std";
23
- /** @type {string} */
24
- export const javaDependencies = "org.junit.jupiter:junit-jupiter:5.9.2";
25
- /** @type {string} */
26
- export const jsName = "@temperlang/std";
package/config.js.map DELETED
@@ -1 +0,0 @@
1
- { "version": 3, "file": "OUTPUT_ROOT/js/std/config.js", "sources": [ "std/config.temper.md" ], "sourcesContent": [ "# Temper Standard Library\n\nThis library holds code that we distribute with Temper but which can be broken\nout from core builtins and also implemented primarily in the Temper language.\n\n export let name = \u0022std\u0022;\n export let version = \u00220.0.6\u0022;\n\n## Metadata\n\n export let authors = \u0022Temper Contributors\u0022;\n export let description = \u0022Optional support library provided with Temper\u0022;\n export let homepage = \u0022https://temperlang.dev/\u0022;\n export let license = \u0022Apache-2.0\u0022;\n export let repository = \u0022https://github.com/temperlang/temper\u0022;\n\n## Imports\n\nWe might break these out into separate libraries in the future.\n\n import(\u0022./regex.temper.md\u0022);\n import(\u0022./testing.temper.md\u0022);\n import(\u0022./temporal.temper.md\u0022);\n\n## Python\n\nWe use the name below on [pypi][std-on-pypi].\n\n export let pyName = \u0022temper-std\u0022;\n\n## Java\n\nWe've chosen to use `temper` as a package prefix for official Temper packages,\nbut to conform to Maven standards, we use a reverse owned domain name for the\ngroup ID on [Maven][std-on-maven].\n\n export let javaGroup = \u0022dev.temperlang\u0022;\n export let javaArtifact = \u0022temper-std\u0022;\n export let javaPackage = \u0022temper.std\u0022;\n\nAnd as long as the `testing` module is part of `std`, we need junit as a core\ndependency of `std`, so its internals can use it. For now, usage is done via\nspecialized connected methods.\n\n export let javaDependencies = \u0022org.junit.jupiter:junit-jupiter:5.9.2\u0022;\n\n## JS\n\nWe use the name below on [npm][std-on-npm].\n\n export let jsName = \u0022@temperlang/std\u0022;\n\n\n[std-on-pypi]: https://pypi.org/project/temper-std/\n[std-on-maven]: https://central.sonatype.com/artifact/dev.temperlang/temper-std/\n[std-on-npm]: https://www.npmjs.com/package/@temperlang/std\n" ], "names": [ "name", "version", "authors", "description", "homepage", "license", "repository", "pyName", "javaGroup", "javaArtifact", "javaPackage", "javaDependencies", "jsName" ], "mappings": "AAKe;AAAI,MAAA,AAAR,MAAI,CAAAA,IAAI,EAAG,MAAK;AACZ;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,QAAO;AAIjB;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,sBAAqB;AAC/B;AAAW,MAAA,AAAf,MAAI,CAAAC,WAAW,EAAG,gDAA+C;AAC7D;AAAQ,MAAA,AAAZ,MAAI,CAAAC,QAAQ,EAAG,0BAAyB;AACpC;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,aAAY;AACtB;AAAU,MAAA,AAAd,MAAI,CAAAC,UAAU,EAAG,uCAAsC;AAcnD;AAAM,MAAA,AAAV,MAAI,CAAAC,MAAM,EAAG,aAAY;AAQrB;AAAS,MAAA,AAAb,MAAI,CAAAC,SAAS,EAAG,iBAAgB;AAC5B;AAAY,MAAA,AAAhB,MAAI,CAAAC,YAAY,EAAG,aAAY;AAC3B;AAAW,MAAA,AAAf,MAAI,CAAAC,WAAW,EAAG,aAAY;AAM1B;AAAgB,MAAA,AAApB,MAAI,CAAAC,gBAAgB,EAAG,wCAAuC;AAM1D;AAAM,MAAA,AAAV,MAAI,CAAAC,MAAM,EAAG,kBAAiB" }
package/regex__preface.js DELETED
File without changes
@@ -1 +0,0 @@
1
- { "version": 3, "file": "OUTPUT_ROOT/js/std/regex__preface.js", "sources": [], "names": [], "mappings": "" }
File without changes
@@ -1 +0,0 @@
1
- { "version": 3, "file": "OUTPUT_ROOT/js/std/temporal__preface.js", "sources": [], "names": [], "mappings": "" }
File without changes
@@ -1 +0,0 @@
1
- { "version": 3, "file": "OUTPUT_ROOT/js/std/testing__preface.js", "sources": [], "names": [], "mappings": "" }