nadesiko3 3.3.45 → 3.3.49

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 (329) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +143 -132
  3. package/batch/browsers.template.md +3 -3
  4. package/batch/build_browsers.nako3 +72 -72
  5. package/batch/build_command.nako3 +44 -44
  6. package/batch/build_nako_version.nako3 +42 -42
  7. package/batch/calc_hash.nako3 +29 -29
  8. package/batch/cmd_txt2json.nako3 +74 -74
  9. package/batch/command.txt +270 -338
  10. package/batch/command_nakopad.txt +9 -69
  11. package/batch/download-extlib.nako3 +43 -43
  12. package/batch/gen_command_nakopad.nako3 +57 -57
  13. package/batch/jsplugin2text.nako3 +285 -285
  14. package/batch/pickup_command.nako3 +110 -110
  15. package/batch/pickup_reserved_words.nako3 +11 -11
  16. package/batch/publish_version.nako3 +46 -46
  17. package/batch/show_agents.js +14 -14
  18. package/batch/turtle2js.nako3 +21 -21
  19. package/bin/cnako3 +10 -10
  20. package/core/.editorconfig +6 -0
  21. package/core/.eslintrc.cjs +33 -0
  22. package/core/.github/dependabot.yml +7 -0
  23. package/core/.github/workflows/nodejs.yml +37 -0
  24. package/core/.github/workflows/super-linter.yml +61 -0
  25. package/core/.github/workflows/textlint.yml +199 -0
  26. package/core/LICENSE +21 -0
  27. package/core/README.md +66 -0
  28. package/core/batch/build_nako_version.nako3 +42 -0
  29. package/core/command/snako.mjs +105 -0
  30. package/core/command/snako.mts +116 -0
  31. package/core/index.mjs +21 -0
  32. package/core/index.mts +21 -0
  33. package/core/package.json +47 -0
  34. package/core/sample/hello.nako3 +7 -0
  35. package/core/sample/hoge.mjs +4 -0
  36. package/core/sample/hoge.mts +6 -0
  37. package/core/src/nako3.mjs +858 -0
  38. package/core/src/nako3.mts +967 -0
  39. package/core/src/nako_colors.mjs +78 -0
  40. package/core/src/nako_colors.mts +86 -0
  41. package/core/src/nako_core_version.mjs +8 -0
  42. package/core/src/nako_core_version.mts +19 -0
  43. package/core/src/nako_csv.mjs +185 -0
  44. package/core/src/nako_csv.mts +188 -0
  45. package/core/src/nako_errors.mjs +173 -0
  46. package/core/src/nako_errors.mts +197 -0
  47. package/core/src/nako_from_dncl.mjs +255 -0
  48. package/core/src/nako_from_dncl.mts +250 -0
  49. package/core/src/nako_gen.mjs +1648 -0
  50. package/core/src/nako_gen.mts +1719 -0
  51. package/core/src/nako_gen_async.mjs +1659 -0
  52. package/core/src/nako_gen_async.mts +1732 -0
  53. package/core/src/nako_global.mjs +107 -0
  54. package/core/src/nako_global.mts +138 -0
  55. package/core/src/nako_indent.mjs +445 -0
  56. package/core/src/nako_indent.mts +492 -0
  57. package/core/src/nako_josi_list.mjs +38 -0
  58. package/core/src/nako_josi_list.mts +45 -0
  59. package/core/src/nako_lex_rules.mjs +253 -0
  60. package/core/src/nako_lex_rules.mts +260 -0
  61. package/core/src/nako_lexer.mjs +609 -0
  62. package/core/src/nako_lexer.mts +612 -0
  63. package/core/src/nako_logger.mjs +199 -0
  64. package/core/src/nako_logger.mts +232 -0
  65. package/core/src/nako_parser3.mjs +2439 -0
  66. package/core/src/nako_parser3.mts +2195 -0
  67. package/core/src/nako_parser_base.mjs +370 -0
  68. package/core/src/nako_parser_base.mts +370 -0
  69. package/core/src/nako_parser_const.mjs +37 -0
  70. package/core/src/nako_parser_const.mts +37 -0
  71. package/core/src/nako_prepare.mjs +304 -0
  72. package/core/src/nako_prepare.mts +315 -0
  73. package/core/src/nako_reserved_words.mjs +38 -0
  74. package/core/src/nako_reserved_words.mts +38 -0
  75. package/core/src/nako_source_mapping.mjs +207 -0
  76. package/core/src/nako_source_mapping.mts +262 -0
  77. package/core/src/nako_test.mjs +37 -0
  78. package/core/src/nako_types.mjs +25 -0
  79. package/core/src/nako_types.mts +151 -0
  80. package/core/src/plugin_csv.mjs +49 -0
  81. package/core/src/plugin_csv.mts +50 -0
  82. package/core/src/plugin_math.mjs +328 -0
  83. package/core/src/plugin_math.mts +326 -0
  84. package/core/src/plugin_promise.mjs +91 -0
  85. package/core/src/plugin_promise.mts +91 -0
  86. package/core/src/plugin_system.mjs +2832 -0
  87. package/core/src/plugin_system.mts +2690 -0
  88. package/core/src/plugin_test.mjs +34 -0
  89. package/core/src/plugin_test.mts +34 -0
  90. package/core/test/array_test.mjs +34 -0
  91. package/core/test/basic_test.mjs +344 -0
  92. package/core/test/calc_test.mjs +140 -0
  93. package/core/test/core_module_test.mjs +23 -0
  94. package/core/test/debug_test.mjs +16 -0
  95. package/core/test/dncl_test.mjs +94 -0
  96. package/core/test/error_message_test.mjs +210 -0
  97. package/core/test/error_test.mjs +16 -0
  98. package/core/test/flow_test.mjs +373 -0
  99. package/core/test/func_call.mjs +160 -0
  100. package/core/test/func_test.mjs +149 -0
  101. package/core/test/indent_test.mjs +364 -0
  102. package/core/test/lex_test.mjs +168 -0
  103. package/core/test/literal_test.mjs +73 -0
  104. package/core/test/nako_lexer_test.mjs +35 -0
  105. package/core/test/nako_logger_test.mjs +76 -0
  106. package/core/test/nako_logger_test.mts +78 -0
  107. package/core/test/plugin_csv_test.mjs +38 -0
  108. package/core/test/plugin_promise_test.mjs +18 -0
  109. package/core/test/plugin_system_test.mjs +630 -0
  110. package/core/test/prepare_test.mjs +96 -0
  111. package/core/test/re_test.mjs +22 -0
  112. package/core/test/side_effects_test.mjs +92 -0
  113. package/core/test/variable_scope_test.mjs +149 -0
  114. package/core/tsconfig.json +101 -0
  115. package/demo/ace_editor.html +89 -89
  116. package/demo/ace_editor_tabs.html +161 -161
  117. package/demo/basic.html +71 -71
  118. package/demo/browsers.html +9 -10
  119. package/demo/css/basic.css +3 -3
  120. package/demo/css/common.css +157 -157
  121. package/demo/css/editor.css +8 -8
  122. package/demo/css/flow.css +3 -3
  123. package/demo/css/index.css +3 -3
  124. package/demo/flow.html +98 -98
  125. package/demo/graph.html +53 -53
  126. package/demo/image/nakopad-icon256.png +0 -0
  127. package/demo/index.html +133 -133
  128. package/demo/js/common.js +17 -17
  129. package/demo/js/turtle3d_test.js +44 -44
  130. package/demo/js/turtle_test.js +45 -45
  131. package/demo/nako3/calc.nako3 +4 -4
  132. package/demo/runscript.html +47 -47
  133. package/demo/runscript2.html +33 -33
  134. package/demo/runscript3.html +35 -35
  135. package/demo/runscript4.html +33 -33
  136. package/demo/turtle.html +58 -58
  137. package/demo/turtle2.html +141 -141
  138. package/demo/turtle3.html +279 -279
  139. package/demo/turtle3d.html +58 -58
  140. package/demo/turtle3d2.html +107 -107
  141. package/demo/version.html +24 -24
  142. package/doc/SETUP.md +157 -157
  143. package/doc/about.md +17 -17
  144. package/doc/browsers.md +26 -26
  145. package/doc/docgen.md +21 -21
  146. package/doc/editor.md +44 -44
  147. package/doc/files.md +39 -39
  148. package/doc/plugins.md +234 -234
  149. package/doc/release.md +79 -79
  150. package/doc/textlint.md +43 -43
  151. package/doc/win32.md +57 -57
  152. package/package.json +195 -192
  153. package/release/_hash.txt +28 -28
  154. package/release/_script-tags.txt +14 -14
  155. package/release/command.json +1 -1
  156. package/release/command.json.js +1 -1
  157. package/release/command_cnako3.json +1 -1
  158. package/release/command_list.json +1 -1
  159. package/release/editor.js +1 -1
  160. package/release/nako_gen_async.js +1 -1
  161. package/release/plugin_csv.js +1 -1
  162. package/release/stats.json +1 -1
  163. package/release/version.js +1 -1
  164. package/release/wnako3.js +1 -1
  165. package/release/wnako3webworker.js +1 -1
  166. package/src/browsers.txt +11 -12
  167. package/src/browsers_agents.json +2 -2
  168. package/src/browsers_agents.mjs +1 -1
  169. package/src/cnako3.mjs +17 -10
  170. package/src/cnako3.mts +18 -12
  171. package/src/cnako3mod.mjs +707 -687
  172. package/src/cnako3mod.mts +712 -696
  173. package/src/commander_ja.mjs +164 -164
  174. package/src/commander_ja.mts +161 -161
  175. package/src/enako3.mjs +68 -69
  176. package/src/era.mjs +22 -22
  177. package/src/image_turtle-elephant.mjs +2 -5
  178. package/src/image_turtle-panda.mjs +2 -5
  179. package/src/image_turtle64.mjs +2 -5
  180. package/src/index.mjs +9 -9
  181. package/src/index.mts +10 -11
  182. package/src/nako3editorfix.sfd +106 -106
  183. package/src/nako_version.mjs +8 -8
  184. package/src/nako_version.mts +2 -2
  185. package/src/plugin_browser.mjs +213 -212
  186. package/src/plugin_browser.mts +206 -205
  187. package/src/plugin_browser_ajax.mjs +399 -399
  188. package/src/plugin_browser_audio.mjs +109 -109
  189. package/src/plugin_browser_canvas.mjs +449 -449
  190. package/src/plugin_browser_chart.mjs +294 -294
  191. package/src/plugin_browser_color.mjs +49 -49
  192. package/src/plugin_browser_crypto.mjs +26 -26
  193. package/src/plugin_browser_dialog.mjs +53 -53
  194. package/src/plugin_browser_dom_basic.mjs +336 -336
  195. package/src/plugin_browser_dom_event.mjs +193 -193
  196. package/src/plugin_browser_dom_parts.mjs +396 -396
  197. package/src/plugin_browser_geolocation.mjs +51 -51
  198. package/src/plugin_browser_hotkey.mjs +25 -25
  199. package/src/plugin_browser_html.mjs +59 -59
  200. package/src/plugin_browser_in_worker.mjs +45 -45
  201. package/src/plugin_browser_location.mjs +21 -21
  202. package/src/plugin_browser_speech.mjs +111 -111
  203. package/src/plugin_browser_storage.mjs +121 -121
  204. package/src/plugin_browser_system.mjs +31 -31
  205. package/src/plugin_browser_websocket.mjs +73 -73
  206. package/src/plugin_caniuse.mjs +29 -29
  207. package/src/plugin_datetime.mjs +394 -394
  208. package/src/plugin_httpserver.mjs +277 -0
  209. package/src/plugin_httpserver.mts +286 -0
  210. package/src/plugin_kansuji.mjs +224 -224
  211. package/src/plugin_keigo.mjs +55 -55
  212. package/src/plugin_markup.mjs +32 -32
  213. package/src/plugin_node.mjs +1047 -1047
  214. package/src/plugin_node.mts +980 -980
  215. package/src/plugin_turtle.mjs +647 -647
  216. package/src/plugin_webworker.mjs +334 -334
  217. package/src/plugin_weykturtle3d.mjs +1214 -1214
  218. package/src/plugin_worker.mjs +95 -95
  219. package/src/repl.nako3 +63 -63
  220. package/src/wnako3.mjs +12 -12
  221. package/src/wnako3.mts +11 -11
  222. package/src/wnako3_editor.css +215 -215
  223. package/src/wnako3_editor.mjs +1542 -1542
  224. package/src/wnako3_editor.mts +1657 -1656
  225. package/src/wnako3mod.mjs +213 -213
  226. package/src/wnako3mod.mts +214 -214
  227. package/src/wnako3webworker.mjs +69 -68
  228. package/test/ace_editor/karma.config.js +94 -94
  229. package/test/ace_editor/test/.babelrc.json +3 -3
  230. package/test/ace_editor/test/ace_editor_test.js +178 -178
  231. package/test/ace_editor/test/html/custom_context.html +139 -139
  232. package/test/async/async_basic_test.mjs +122 -122
  233. package/test/browser/karma.config.js +221 -221
  234. package/test/browser/test/.babelrc.json +3 -3
  235. package/test/browser/test/compare_util.js +50 -50
  236. package/test/browser/test/html/div_basic.html +2 -2
  237. package/test/browser/test/html/event_dom_form.html +4 -4
  238. package/test/browser/test/html/event_dom_scrolldiv.html +5 -5
  239. package/test/browser/test/import_plugin_checker.js +24 -24
  240. package/test/browser/test/plugin_browser_test.js +51 -51
  241. package/test/browser/test/plugin_browser_test_ajax.js +123 -123
  242. package/test/browser/test/plugin_browser_test_color.js +18 -18
  243. package/test/browser/test/plugin_browser_test_dialog.js +72 -72
  244. package/test/browser/test/plugin_browser_test_dom_event.js +598 -598
  245. package/test/browser/test/plugin_browser_test_dom_parts.js +125 -125
  246. package/test/browser/test/plugin_browser_test_system.js +9 -9
  247. package/test/browser/test/plugin_turtle_test.js +817 -817
  248. package/test/browser/test/plugin_webworker_test.js +86 -86
  249. package/test/browser/test/require_test.js +68 -68
  250. package/test/bundled/karma.config.base.js +117 -117
  251. package/test/bundled/karma.config.js +86 -86
  252. package/test/bundled/test/.babelrc.json +3 -3
  253. package/test/bundled/test/bundled_test.js +69 -69
  254. package/test/bundled/test/html/custom_context.html +65 -65
  255. package/test/bundled/test/html/custom_debug.html +66 -66
  256. package/test/bundled/test4b.cmd +52 -52
  257. package/test/bundled/test_base/.babelrc.json +3 -3
  258. package/test/bundled/test_base/_checktool_test.js +25 -25
  259. package/test/bundled/test_base/basic_ajax_test.js +56 -56
  260. package/test/bundled/test_base/basic_async_test.js +18 -18
  261. package/test/bundled/test_base/basic_test.js +153 -153
  262. package/test/bundled/test_base/calc_test.js +132 -132
  263. package/test/bundled/test_base/css/browsers_box.css +114 -114
  264. package/test/bundled/test_base/html/custom_context.html +69 -69
  265. package/test/bundled/test_base/html/custom_debug.html +71 -71
  266. package/test/bundled/test_base/js/browsers_box.js +72 -72
  267. package/test/bundled/test_base/plugin_csv_test.js +37 -37
  268. package/test/bundled/test_base/plugin_datetime_test.js +115 -115
  269. package/test/bundled/test_base/plugin_kansuji_test.js +49 -49
  270. package/test/bundled/test_base/plugin_system_test.js +410 -410
  271. package/test/bundled/test_base/plugin_webworker_test.js +53 -53
  272. package/test/bundled/test_base/test_utils.js +191 -191
  273. package/test/common/plugin_browser_test.mjs +22 -24
  274. package/test/common/plugin_browser_ut_audio_test.mjs +108 -108
  275. package/test/common/plugin_browser_ut_color_test.mjs +21 -21
  276. package/test/common/plugin_browser_ut_dialog_test.mjs +100 -100
  277. package/test/common/plugin_browser_ut_html_test.mjs +13 -13
  278. package/test/common/plugin_browser_ut_system_test.mjs +10 -10
  279. package/test/common/plugin_markup_test.mjs +23 -23
  280. package/test/jsconfig.json +19 -19
  281. package/test/karma.config.js +91 -91
  282. package/test/node/async_test.mjs +96 -82
  283. package/test/node/commander_ja_test.mjs +89 -89
  284. package/test/node/error_message_test.mjs +243 -253
  285. package/test/node/kai_test.nako3 +6 -6
  286. package/test/node/node_test.mjs +60 -60
  287. package/test/node/plugin_broken.js.txt +3 -3
  288. package/test/node/plugin_browser_ut_ajax_test.mjs.todo +357 -357
  289. package/test/node/plugin_browser_ut_location_test.mjs +42 -42
  290. package/test/node/plugin_markup_test.mjs +47 -46
  291. package/test/node/plugin_math_test.mjs +45 -44
  292. package/test/node/plugin_node_test.mjs +98 -97
  293. package/test/node/plugin_test.mjs +44 -43
  294. package/test/node/relative_import_test_1.nako3 +1 -1
  295. package/test/node/relative_import_test_2.nako3 +2 -2
  296. package/test/node/require_nako3_test.mjs +67 -66
  297. package/test/node/requiretest.nako3 +4 -4
  298. package/test/node/requiretest_indirect.nako3 +1 -1
  299. package/test/node/requiretest_name.nako3 +5 -5
  300. package/test/node/runtime_error.nako3 +2 -2
  301. package/test/node/scope1.nako3 +10 -10
  302. package/test/node/scope2.nako3 +12 -12
  303. package/test/node/side_effects_test.mjs +39 -119
  304. package/test/node/sjis.txt +5 -5
  305. package/test/node/syntax_error.nako3 +1 -1
  306. package/test/node/wnako3_editor_test.mjs +384 -384
  307. package/tools/README.md +12 -7
  308. package/tools/check_new_version.nako3 +25 -25
  309. package/tools/nako3edit/html/daisyui/LICENSE +22 -22
  310. package/tools/nako3edit/html/daisyui/version_2.14.1 +1 -1
  311. package/tools/nako3edit/html/edit.html +170 -170
  312. package/tools/nako3edit/html/edit_plugin.js +6 -6
  313. package/tools/nako3edit/html/files.html +125 -125
  314. package/tools/nako3edit/html/nako3edit.css +65 -65
  315. package/tools/nako3edit/index.mjs +248 -244
  316. package/tools/nako3server/index.html +10 -0
  317. package/tools/nako3server/index.mjs +116 -116
  318. package/tools/nako3server/index.nako3 +34 -0
  319. package/release/nako_gen_async.js.LICENSE.txt +0 -35
  320. package/release/plugin_caniuse.js.LICENSE.txt +0 -11
  321. package/release/plugin_csv.js.LICENSE.txt +0 -15
  322. package/release/plugin_datetime.js.LICENSE.txt +0 -15
  323. package/release/plugin_kansuji.js.LICENSE.txt +0 -3
  324. package/release/plugin_markup.js.LICENSE.txt +0 -11
  325. package/release/plugin_turtle.js.LICENSE.txt +0 -15
  326. package/release/plugin_webworker.js.LICENSE.txt +0 -3
  327. package/release/plugin_weykturtle3d.js.LICENSE.txt +0 -3
  328. package/release/wnako3webworker.js.LICENSE.txt +0 -131
  329. package/tools/nako3edit/a.sqlite3 +0 -0
@@ -1,132 +1,132 @@
1
- const TestEnv = require('./test_utils').TestEnv
2
-
3
- describe('calc_test.js', () => {
4
- const env = new TestEnv()
5
- before( function () {
6
- env.getEnv()
7
- })
8
-
9
- const cmp = (code, res) => {
10
- env.cmpInfo(code, res)
11
- }
12
- it('basic', () => {
13
- cmp('3を表示', '3')
14
- cmp('3.14を表示', '3.14')
15
- cmp('0.5e+3を表示', '500')
16
- })
17
- it('足し算', () => {
18
- cmp('3+5を表示', '8')
19
- })
20
- it('引き算', () => {
21
- cmp('10-5を表示。', '5')
22
- cmp('10-5を表示。', '5')
23
- })
24
- it('掛け算', () => {
25
- cmp('1+2*3を表示', '7')
26
- })
27
- it('連続演算:して', () => {
28
- cmp('3に5を足して表示', '8')
29
- })
30
- it('連続演算:て-3に5を掛けて表示', () => {
31
- cmp('3に5を掛けて表示', '15')
32
- })
33
- it('配列', () => {
34
- cmp('a=[];a[1]=30;a[1]を表示', '30')
35
- cmp('a=[];a【1】=30;a[1]を表示', '30')
36
- })
37
- it('ネスト配列', () => {
38
- cmp('a=[[1,2,3], [4,5,6]];a[1][1]を表示', '5')
39
- })
40
- it('ネスト配列で、マイナスを含むときのバグ修正 (#276)', () => {
41
- cmp('a=[[-1, -1], [1, -1]];a[0][0]を表示', '-1')
42
- })
43
- it('オブジェクト', () => {
44
- cmp('a={};a[\'a\']=30;a[\'a\']を表示', '30')
45
- })
46
- it('階乗', () => {
47
- cmp('2^3を表示', '8')
48
- })
49
- it('否定', () => {
50
- cmp('(!1)を表示', '0')
51
- cmp('(!0)を表示', '1')
52
- cmp('(!オン)を表示', '0')
53
- cmp('(!オフ)を表示', '1')
54
- })
55
- it('配列簡易記号', () => {
56
- cmp('A=[];A@0=5;A@0を表示', '5')
57
- cmp('A=[];A@0=5;A@1=6;AをJSONエンコードして表示', '[5,6]')
58
- })
59
- it('JSON配列-改行あり', () => {
60
- cmp('A=[\n0,\n1,\n2,\n3];A@2を表示', '2')
61
- })
62
- it('JSON配列-カンマ省略', () => {
63
- cmp('A=[1 2 3 4 5];AをJSONエンコードして表示', '[1,2,3,4,5]')
64
- })
65
- it('JSON配列-ネスト', () => {
66
- cmp('A=[[1,2,3],[4,5,6]];AをJSONエンコードして表示', '[[1,2,3],[4,5,6]]')
67
- })
68
- it('JSONオブジェクト-改行あり', () => {
69
- cmp('A={\n"殿":"男","姫":"女"\n};A@"殿"を表示', '男')
70
- })
71
- it('JSONオブジェクト-値を省略した場合', () => {
72
- cmp('N={"hoge"};N["hoge"]を表示。', 'hoge')
73
- cmp('N={"hoge","fuga","bar"};N["bar"]を表示。', 'bar')
74
- cmp('N={32,45,66};N[45]を表示。', '45')
75
- })
76
- it('JSONオブジェクト-キーを文字列で囲わなかった場合', () => {
77
- cmp('N={hoge:30};N["hoge"]を表示。', '30')
78
- })
79
- it('文字列→数値への暗黙的変換', () => {
80
- cmp('A="5";B="50";A+Bを表示', '55')
81
- cmp('"100"/"2"を表示', '50')
82
- cmp('"2"*"3"を表示', '6')
83
- cmp('"100"%"10"を表示', '0')
84
- })
85
- it('空配列テスト', () => {
86
- cmp('A=空配列;A@0=30;A@1=50;Aを「:」で配列結合して表示', '30:50')
87
- cmp('A=空配列;B=空配列;A@0=30;A@1=50;B@0=1;Bを「:」で配列結合して表示', '1')
88
- })
89
- it('単項演算子 minus number', () => {
90
- cmp('-1*5を表示', '-5')
91
- cmp('5*-1を表示', '-5')
92
- })
93
- it('単項演算子 minus word', () => {
94
- cmp('A=1;5*-Aを表示', '-5')
95
- })
96
- it('論理演算', () => {
97
- cmp('BMI=25;A=((25 ≦ BMI) かつ (BMI < 30));Aを表示', 'true')
98
- cmp('BMI=25;A=((18.5 > BMI) または (BMI > 30));Aを表示', 'false')
99
- })
100
- it('カッコ内の関数呼び出し', () => {
101
- cmp('N=("ABC"の文字数);Nを表示。', '3')
102
- })
103
- it('文字列の埋め込み変数加算', () => {
104
- cmp('N1=30;「--{N1+1}--」を表示', '--31--')
105
- })
106
- it('文字列の埋め込み変数減算', () => {
107
- cmp('N1=30;「--{N1-1}--」を表示', '--29--')
108
- })
109
- it('文字列の埋め込み変数乗算', () => {
110
- cmp('N1=30;「--{N1*2}--」を表示', '--60--')
111
- })
112
- it('文字列の埋め込み変数除算', () => {
113
- cmp('N1=30;「--{N1/2}--」を表示', '--15--')
114
- })
115
- it('文字列の埋め込み変数剰余', () => {
116
- cmp('N1=30;「--{N1%2}--」を表示', '--0--')
117
- })
118
- it('文字列の埋め込み変数冪乗', () => {
119
- cmp('N1=2;「--{N1^3}--」を表示', '--8--')
120
- })
121
- it('比較演算子', () => {
122
- cmp('A=1>5;Aを表示', 'false')
123
- })
124
- it('ビット演算', () => {
125
- cmp('A=0xF0>>4;Aを表示', '15')
126
- cmp('A=0xF<<4;Aを表示', '240')
127
- })
128
- it('連文で計算 (#729)', () => {
129
- cmp('1に2を足して3を足して4を引いて5を掛けて2で割って表示', '5')
130
- cmp('2に3を掛けて4を足して5で割って表示', '2')
131
- })
132
- })
1
+ const TestEnv = require('./test_utils').TestEnv
2
+
3
+ describe('calc_test.js', () => {
4
+ const env = new TestEnv()
5
+ before( function () {
6
+ env.getEnv()
7
+ })
8
+
9
+ const cmp = (code, res) => {
10
+ env.cmpInfo(code, res)
11
+ }
12
+ it('basic', () => {
13
+ cmp('3を表示', '3')
14
+ cmp('3.14を表示', '3.14')
15
+ cmp('0.5e+3を表示', '500')
16
+ })
17
+ it('足し算', () => {
18
+ cmp('3+5を表示', '8')
19
+ })
20
+ it('引き算', () => {
21
+ cmp('10-5を表示。', '5')
22
+ cmp('10-5を表示。', '5')
23
+ })
24
+ it('掛け算', () => {
25
+ cmp('1+2*3を表示', '7')
26
+ })
27
+ it('連続演算:して', () => {
28
+ cmp('3に5を足して表示', '8')
29
+ })
30
+ it('連続演算:て-3に5を掛けて表示', () => {
31
+ cmp('3に5を掛けて表示', '15')
32
+ })
33
+ it('配列', () => {
34
+ cmp('a=[];a[1]=30;a[1]を表示', '30')
35
+ cmp('a=[];a【1】=30;a[1]を表示', '30')
36
+ })
37
+ it('ネスト配列', () => {
38
+ cmp('a=[[1,2,3], [4,5,6]];a[1][1]を表示', '5')
39
+ })
40
+ it('ネスト配列で、マイナスを含むときのバグ修正 (#276)', () => {
41
+ cmp('a=[[-1, -1], [1, -1]];a[0][0]を表示', '-1')
42
+ })
43
+ it('オブジェクト', () => {
44
+ cmp('a={};a[\'a\']=30;a[\'a\']を表示', '30')
45
+ })
46
+ it('階乗', () => {
47
+ cmp('2^3を表示', '8')
48
+ })
49
+ it('否定', () => {
50
+ cmp('(!1)を表示', '0')
51
+ cmp('(!0)を表示', '1')
52
+ cmp('(!オン)を表示', '0')
53
+ cmp('(!オフ)を表示', '1')
54
+ })
55
+ it('配列簡易記号', () => {
56
+ cmp('A=[];A@0=5;A@0を表示', '5')
57
+ cmp('A=[];A@0=5;A@1=6;AをJSONエンコードして表示', '[5,6]')
58
+ })
59
+ it('JSON配列-改行あり', () => {
60
+ cmp('A=[\n0,\n1,\n2,\n3];A@2を表示', '2')
61
+ })
62
+ it('JSON配列-カンマ省略', () => {
63
+ cmp('A=[1 2 3 4 5];AをJSONエンコードして表示', '[1,2,3,4,5]')
64
+ })
65
+ it('JSON配列-ネスト', () => {
66
+ cmp('A=[[1,2,3],[4,5,6]];AをJSONエンコードして表示', '[[1,2,3],[4,5,6]]')
67
+ })
68
+ it('JSONオブジェクト-改行あり', () => {
69
+ cmp('A={\n"殿":"男","姫":"女"\n};A@"殿"を表示', '男')
70
+ })
71
+ it('JSONオブジェクト-値を省略した場合', () => {
72
+ cmp('N={"hoge"};N["hoge"]を表示。', 'hoge')
73
+ cmp('N={"hoge","fuga","bar"};N["bar"]を表示。', 'bar')
74
+ cmp('N={32,45,66};N[45]を表示。', '45')
75
+ })
76
+ it('JSONオブジェクト-キーを文字列で囲わなかった場合', () => {
77
+ cmp('N={hoge:30};N["hoge"]を表示。', '30')
78
+ })
79
+ it('文字列→数値への暗黙的変換', () => {
80
+ cmp('A="5";B="50";A+Bを表示', '55')
81
+ cmp('"100"/"2"を表示', '50')
82
+ cmp('"2"*"3"を表示', '6')
83
+ cmp('"100"%"10"を表示', '0')
84
+ })
85
+ it('空配列テスト', () => {
86
+ cmp('A=空配列;A@0=30;A@1=50;Aを「:」で配列結合して表示', '30:50')
87
+ cmp('A=空配列;B=空配列;A@0=30;A@1=50;B@0=1;Bを「:」で配列結合して表示', '1')
88
+ })
89
+ it('単項演算子 minus number', () => {
90
+ cmp('-1*5を表示', '-5')
91
+ cmp('5*-1を表示', '-5')
92
+ })
93
+ it('単項演算子 minus word', () => {
94
+ cmp('A=1;5*-Aを表示', '-5')
95
+ })
96
+ it('論理演算', () => {
97
+ cmp('BMI=25;A=((25 ≦ BMI) かつ (BMI < 30));Aを表示', 'true')
98
+ cmp('BMI=25;A=((18.5 > BMI) または (BMI > 30));Aを表示', 'false')
99
+ })
100
+ it('カッコ内の関数呼び出し', () => {
101
+ cmp('N=("ABC"の文字数);Nを表示。', '3')
102
+ })
103
+ it('文字列の埋め込み変数加算', () => {
104
+ cmp('N1=30;「--{N1+1}--」を表示', '--31--')
105
+ })
106
+ it('文字列の埋め込み変数減算', () => {
107
+ cmp('N1=30;「--{N1-1}--」を表示', '--29--')
108
+ })
109
+ it('文字列の埋め込み変数乗算', () => {
110
+ cmp('N1=30;「--{N1*2}--」を表示', '--60--')
111
+ })
112
+ it('文字列の埋め込み変数除算', () => {
113
+ cmp('N1=30;「--{N1/2}--」を表示', '--15--')
114
+ })
115
+ it('文字列の埋め込み変数剰余', () => {
116
+ cmp('N1=30;「--{N1%2}--」を表示', '--0--')
117
+ })
118
+ it('文字列の埋め込み変数冪乗', () => {
119
+ cmp('N1=2;「--{N1^3}--」を表示', '--8--')
120
+ })
121
+ it('比較演算子', () => {
122
+ cmp('A=1>5;Aを表示', 'false')
123
+ })
124
+ it('ビット演算', () => {
125
+ cmp('A=0xF0>>4;Aを表示', '15')
126
+ cmp('A=0xF<<4;Aを表示', '240')
127
+ })
128
+ it('連文で計算 (#729)', () => {
129
+ cmp('1に2を足して3を足して4を引いて5を掛けて2で割って表示', '5')
130
+ cmp('2に3を掛けて4を足して5で割って表示', '2')
131
+ })
132
+ })
@@ -1,114 +1,114 @@
1
- /* reset style */
2
- h1, h3, .sbox h4, .edit_head, .buttons, #info {
3
- margin: 0;
4
- }
5
-
6
- h1, h3, #info {
7
- padding: 0.5em;
8
- }
9
-
10
- /* title */
11
- h1#title, h1 {
12
- background-color: #fff0f0;
13
- margin: 0;
14
- padding: 4px;
15
- color: black;
16
- font-size: 1.3em;
17
- }
18
-
19
- /* menubar */
20
- div.menubar {
21
- background-color: #f0e0e0;
22
- font-size: 0.8em;
23
- color: black;
24
- margin: 0; padding: 4px;
25
- overflow: hidden;
26
- }
27
- h3, .info, .err, #src_box, .src {
28
- font-size: 1em;
29
- }
30
-
31
- h3 {
32
- background-color: #e0e0e0;
33
- border-bottom: 1px solid gray;
34
- }
35
-
36
-
37
- .sbox h4 {
38
- font-size: 0.9em;
39
- padding: 4px;
40
- }
41
-
42
- .default_button {
43
- min-width: 10em;
44
- }
45
- .mini_button {
46
- width: 1em;
47
- }
48
-
49
- button {
50
- padding: 0.4em;
51
- cursor: pointer;
52
- }
53
-
54
- .turtle_canvas {
55
- border: 1px solid silver;
56
- }
57
-
58
- .turtle_box, .buttons {
59
- text-align: center;
60
- }
61
-
62
- .edit_head, .buttons {
63
- padding: 0.3em;
64
- }
65
-
66
- .edit_head {
67
- font-size: 0.8em;
68
- color: gray;
69
- }
70
-
71
- .edit_div {
72
- margin: 0.5em;
73
- padding: 0;
74
- }
75
-
76
- .info, .err, #src_box, .src {
77
- line-height: 1.5em;
78
- }
79
-
80
- .info, .err {
81
- border: 1px solid gray;
82
- padding: 8px;
83
- }
84
-
85
- .info {
86
- background-color: #f0fff0;
87
- margin-top: 0;
88
- }
89
-
90
- .err {
91
- background-color: #fff0f0;
92
- }
93
-
94
- #src_box, .src, #info {
95
- width: 99%;
96
- }
97
-
98
- #src_box {
99
- background-color: #fffff0;
100
- }
101
-
102
- .src {
103
- background-color: #fafafa;
104
- }
105
-
106
- .src_read {
107
- background-color: #f0f0f0;
108
- }
109
-
110
- .sbox {
111
- border-bottom: 1px solid silver;
112
- margin: 8px;
113
- padding: 12px;
114
- }
1
+ /* reset style */
2
+ h1, h3, .sbox h4, .edit_head, .buttons, #info {
3
+ margin: 0;
4
+ }
5
+
6
+ h1, h3, #info {
7
+ padding: 0.5em;
8
+ }
9
+
10
+ /* title */
11
+ h1#title, h1 {
12
+ background-color: #fff0f0;
13
+ margin: 0;
14
+ padding: 4px;
15
+ color: black;
16
+ font-size: 1.3em;
17
+ }
18
+
19
+ /* menubar */
20
+ div.menubar {
21
+ background-color: #f0e0e0;
22
+ font-size: 0.8em;
23
+ color: black;
24
+ margin: 0; padding: 4px;
25
+ overflow: hidden;
26
+ }
27
+ h3, .info, .err, #src_box, .src {
28
+ font-size: 1em;
29
+ }
30
+
31
+ h3 {
32
+ background-color: #e0e0e0;
33
+ border-bottom: 1px solid gray;
34
+ }
35
+
36
+
37
+ .sbox h4 {
38
+ font-size: 0.9em;
39
+ padding: 4px;
40
+ }
41
+
42
+ .default_button {
43
+ min-width: 10em;
44
+ }
45
+ .mini_button {
46
+ width: 1em;
47
+ }
48
+
49
+ button {
50
+ padding: 0.4em;
51
+ cursor: pointer;
52
+ }
53
+
54
+ .turtle_canvas {
55
+ border: 1px solid silver;
56
+ }
57
+
58
+ .turtle_box, .buttons {
59
+ text-align: center;
60
+ }
61
+
62
+ .edit_head, .buttons {
63
+ padding: 0.3em;
64
+ }
65
+
66
+ .edit_head {
67
+ font-size: 0.8em;
68
+ color: gray;
69
+ }
70
+
71
+ .edit_div {
72
+ margin: 0.5em;
73
+ padding: 0;
74
+ }
75
+
76
+ .info, .err, #src_box, .src {
77
+ line-height: 1.5em;
78
+ }
79
+
80
+ .info, .err {
81
+ border: 1px solid gray;
82
+ padding: 8px;
83
+ }
84
+
85
+ .info {
86
+ background-color: #f0fff0;
87
+ margin-top: 0;
88
+ }
89
+
90
+ .err {
91
+ background-color: #fff0f0;
92
+ }
93
+
94
+ #src_box, .src, #info {
95
+ width: 99%;
96
+ }
97
+
98
+ #src_box {
99
+ background-color: #fffff0;
100
+ }
101
+
102
+ .src {
103
+ background-color: #fafafa;
104
+ }
105
+
106
+ .src_read {
107
+ background-color: #f0f0f0;
108
+ }
109
+
110
+ .sbox {
111
+ border-bottom: 1px solid silver;
112
+ margin: 8px;
113
+ padding: 12px;
114
+ }
@@ -1,69 +1,69 @@
1
- <!DOCTYPE html>
2
- <!--
3
- This is the execution context.
4
- Loaded within the iframe.
5
- Reloaded before every execution run.
6
- -->
7
- <html>
8
- <head>
9
- <title></title>
10
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
- <meta http-equiv="X-UA-Compatible" content="IE=edge" >
12
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
13
- <link rel="stylesheet" href="/css/browsers_box.css">
14
- </head>
15
- <body>
16
- <h1>なでしこブラウザテスト</h1>
17
- <!-- editor -->
18
- <div id="editor" class="edit_div">
19
- <h2 class="edit_head">簡易エディタ:</h2>
20
- <textarea id="src_box" rows="4"></textarea>
21
- <div class="buttons">
22
- <button id="run_button" class="default_button">実行</button>
23
- <button id="reset_button" class="default_button">クリア</button>
24
- </div>
25
- <div class="result_box">
26
- <h3 class="edit_head">結果:</h3>
27
- <textarea id="info" class="info" style="textAlign: left"></textarea>
28
- <div id="json" class="info" style="textAlign: left"></div>
29
- <div id="err" class="err"><span id="errName"></span><br><span id="errMessage"></span></div>
30
- <!-- <canvas id="turtle_cv" class="turtle_canvas" width="280" height="380"></canvas>
31
- <div id="turtle3d_div" class="turtle_div" width="280" height="380" style="width:280;height:380"></div> -->
32
- </div>
33
- </div>
34
- <!-- なでしこ-->
35
- <script src="/release/wnako3.js"></script>
36
- <script src="/js/browsers_box.js"></script>
37
- <script src="/release/plugin_kansuji.js"></script>
38
- <script src="/release/plugin_markup.js"></script>
39
- <script src="/release/plugin_datetime.js"></script>
40
- <script src="/release/plugin_csv.js"></script>
41
- <script src="/release/plugin_caniuse.js"></script>
42
- <script src="/release/plugin_webworker.js"></script>
43
- <!-- <script src="/release/plugin_turtle.js"></script> -->
44
- <!-- <script src="/release/plugin_weykturtle3d.js"></script> -->
45
- <!-- The scripts need to be in the body DOM element, as some test running frameworks need the body
46
- to have already been created so they can insert their magic into it. For example, if loaded
47
- before body, Angular Scenario test framework fails to find the body and crashes and burns in
48
- an epic manner. -->
49
- <script src="context.js"></script>
50
- <script type="text/javascript">
51
- // Configure our Karma and set up bindings
52
- %CLIENT_CONFIG%
53
- window.__karma__.setupContext(window);
54
-
55
- // All served files with the latest timestamps
56
- %MAPPINGS%
57
- </script>
58
- <!-- Dynamically replaced with <script> tags -->
59
- %SCRIPTS%
60
- <!-- Since %SCRIPTS% might include modules, the `loaded()` call needs to be in a module too.
61
- This ensures all the tests will have been declared before karma tries to run them. -->
62
- <script type="module">
63
- window.__karma__.loaded();
64
- </script>
65
- <script nomodule>
66
- window.__karma__.loaded();
67
- </script>
68
- </body>
69
- </html>
1
+ <!DOCTYPE html>
2
+ <!--
3
+ This is the execution context.
4
+ Loaded within the iframe.
5
+ Reloaded before every execution run.
6
+ -->
7
+ <html>
8
+ <head>
9
+ <title></title>
10
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" >
12
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
13
+ <link rel="stylesheet" href="/css/browsers_box.css">
14
+ </head>
15
+ <body>
16
+ <h1>なでしこブラウザテスト</h1>
17
+ <!-- editor -->
18
+ <div id="editor" class="edit_div">
19
+ <h2 class="edit_head">簡易エディタ:</h2>
20
+ <textarea id="src_box" rows="4"></textarea>
21
+ <div class="buttons">
22
+ <button id="run_button" class="default_button">実行</button>
23
+ <button id="reset_button" class="default_button">クリア</button>
24
+ </div>
25
+ <div class="result_box">
26
+ <h3 class="edit_head">結果:</h3>
27
+ <textarea id="info" class="info" style="textAlign: left"></textarea>
28
+ <div id="json" class="info" style="textAlign: left"></div>
29
+ <div id="err" class="err"><span id="errName"></span><br><span id="errMessage"></span></div>
30
+ <!-- <canvas id="turtle_cv" class="turtle_canvas" width="280" height="380"></canvas>
31
+ <div id="turtle3d_div" class="turtle_div" width="280" height="380" style="width:280;height:380"></div> -->
32
+ </div>
33
+ </div>
34
+ <!-- なでしこ-->
35
+ <script src="/release/wnako3.js"></script>
36
+ <script src="/js/browsers_box.js"></script>
37
+ <script src="/release/plugin_kansuji.js"></script>
38
+ <script src="/release/plugin_markup.js"></script>
39
+ <script src="/release/plugin_datetime.js"></script>
40
+ <script src="/release/plugin_csv.js"></script>
41
+ <script src="/release/plugin_caniuse.js"></script>
42
+ <script src="/release/plugin_webworker.js"></script>
43
+ <!-- <script src="/release/plugin_turtle.js"></script> -->
44
+ <!-- <script src="/release/plugin_weykturtle3d.js"></script> -->
45
+ <!-- The scripts need to be in the body DOM element, as some test running frameworks need the body
46
+ to have already been created so they can insert their magic into it. For example, if loaded
47
+ before body, Angular Scenario test framework fails to find the body and crashes and burns in
48
+ an epic manner. -->
49
+ <script src="context.js"></script>
50
+ <script type="text/javascript">
51
+ // Configure our Karma and set up bindings
52
+ %CLIENT_CONFIG%
53
+ window.__karma__.setupContext(window);
54
+
55
+ // All served files with the latest timestamps
56
+ %MAPPINGS%
57
+ </script>
58
+ <!-- Dynamically replaced with <script> tags -->
59
+ %SCRIPTS%
60
+ <!-- Since %SCRIPTS% might include modules, the `loaded()` call needs to be in a module too.
61
+ This ensures all the tests will have been declared before karma tries to run them. -->
62
+ <script type="module">
63
+ window.__karma__.loaded();
64
+ </script>
65
+ <script nomodule>
66
+ window.__karma__.loaded();
67
+ </script>
68
+ </body>
69
+ </html>