Skip to content

Commit 496cb02

Browse files
author
Hongbo Zhang
committed
add a test case
1 parent 4442de4 commit 496cb02

File tree

9 files changed

+232
-26
lines changed

9 files changed

+232
-26
lines changed

jscomp/test/.depend

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ buffer_test.cmo : ../stdlib/string.cmi mt.cmo ../stdlib/bytes.cmi \
5050
../stdlib/buffer.cmi
5151
buffer_test.cmx : ../stdlib/string.cmx mt.cmx ../stdlib/bytes.cmx \
5252
../stdlib/buffer.cmx
53-
complex_if.cmo :
54-
complex_if.cmx :
53+
complex_if_test.cmo : mt.cmo ../stdlib/bytes.cmi
54+
complex_if_test.cmx : mt.cmx ../stdlib/bytes.cmx
5555
complex_test.cmo : mt.cmo ../stdlib/complex.cmi
5656
complex_test.cmx : mt.cmx ../stdlib/complex.cmx
5757
complex_while_loop.cmo :
@@ -408,8 +408,8 @@ buffer_test.cmo : ../stdlib/string.cmi mt.cmo ../stdlib/bytes.cmi \
408408
../stdlib/buffer.cmi
409409
buffer_test.cmj : ../stdlib/string.cmj mt.cmj ../stdlib/bytes.cmj \
410410
../stdlib/buffer.cmj
411-
complex_if.cmo :
412-
complex_if.cmj :
411+
complex_if_test.cmo : mt.cmo ../stdlib/bytes.cmi
412+
complex_if_test.cmj : mt.cmj ../stdlib/bytes.cmj
413413
complex_test.cmo : mt.cmo ../stdlib/complex.cmi
414414
complex_test.cmj : mt.cmj ../stdlib/complex.cmj
415415
complex_while_loop.cmo :

jscomp/test/complex_if.d.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

jscomp/test/complex_if.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

jscomp/test/complex_if.ml

Lines changed: 0 additions & 3 deletions
This file was deleted.

jscomp/test/complex_if_test.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export var fib: (n : any) => any ;
2+
export var escaped: (s : any) => any ;
3+
export var string_escaped: (s : any) => any ;
4+
export var suites: any ;
5+

jscomp/test/complex_if_test.js

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
// Generated CODE, PLEASE EDIT WITH CARE
2+
"use strict";
3+
4+
var Bytes = require("../stdlib/bytes");
5+
var Mt = require("./mt");
6+
var Caml_string = require("../runtime/caml_string");
7+
8+
function fib(n) {
9+
if (n !== 1 && n !== 23) {
10+
return fib(n - 1) + fib(n - 2);
11+
}
12+
else {
13+
return 11111123;
14+
}
15+
}
16+
17+
function escaped(s) {
18+
var n = 0;
19+
for(var i = 0 ,i_finish = s.length - 1; i<= i_finish; ++i){
20+
var match = s[i];
21+
var $js;
22+
if (match >= 32) {
23+
var switcher = match - 34;
24+
$js = switcher > 58 || switcher < 0 ? (
25+
switcher >= 93 ? 4 : 1
26+
) : (
27+
switcher > 57 || switcher < 1 ? 2 : 1
28+
);
29+
}
30+
else {
31+
$js = match >= 11 ? (
32+
match !== 13 ? 4 : 2
33+
) : (
34+
match >= 8 ? 2 : 4
35+
);
36+
}
37+
n += $js;
38+
}
39+
if (n === s.length) {
40+
return Bytes.copy(s);
41+
}
42+
else {
43+
var s$prime = Caml_string.caml_create_string(n);
44+
n = 0;
45+
for(var i$1 = 0 ,i_finish$1 = s.length - 1; i$1<= i_finish$1; ++i$1){
46+
var c = s[i$1];
47+
var exit = 0;
48+
if (c >= 35) {
49+
if (c !== 92) {
50+
if (c >= 127) {
51+
exit = 1;
52+
}
53+
else {
54+
s$prime[n] = c;
55+
}
56+
}
57+
else {
58+
exit = 2;
59+
}
60+
}
61+
else if (c >= 32) {
62+
if (c >= 34) {
63+
exit = 2;
64+
}
65+
else {
66+
s$prime[n] = c;
67+
}
68+
}
69+
else if (c >= 14) {
70+
exit = 1;
71+
}
72+
else {
73+
switch (c) {
74+
case 8 :
75+
s$prime[n] = /* "\\" */92;
76+
++ n;
77+
s$prime[n] = /* "b" */98;
78+
break;
79+
case 9 :
80+
s$prime[n] = /* "\\" */92;
81+
++ n;
82+
s$prime[n] = /* "t" */116;
83+
break;
84+
case 10 :
85+
s$prime[n] = /* "\\" */92;
86+
++ n;
87+
s$prime[n] = /* "n" */110;
88+
break;
89+
case 0 :
90+
case 1 :
91+
case 2 :
92+
case 3 :
93+
case 4 :
94+
case 5 :
95+
case 6 :
96+
case 7 :
97+
case 11 :
98+
case 12 :
99+
exit = 1;
100+
break;
101+
case 13 :
102+
s$prime[n] = /* "\\" */92;
103+
++ n;
104+
s$prime[n] = /* "r" */114;
105+
break;
106+
107+
}
108+
}
109+
switch (exit) {
110+
case 1 :
111+
s$prime[n] = /* "\\" */92;
112+
++ n;
113+
s$prime[n] = 48 + (c / 100 | 0);
114+
++ n;
115+
s$prime[n] = 48 + (c / 10 | 0) % 10;
116+
++ n;
117+
s$prime[n] = 48 + c % 10;
118+
break;
119+
case 2 :
120+
s$prime[n] = /* "\\" */92;
121+
++ n;
122+
s$prime[n] = c;
123+
break;
124+
125+
}
126+
++ n;
127+
}
128+
return s$prime;
129+
}
130+
}
131+
132+
function string_escaped(s) {
133+
return Bytes.to_string(escaped(Bytes.of_string(s)));
134+
}
135+
136+
var suites_001 = [
137+
/* tuple */0,
138+
"complete_escape",
139+
function () {
140+
return [
141+
/* Eq */0,
142+
Bytes.to_string(escaped(Bytes.of_string("\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\x0b\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"))),
143+
"\\000\\001\\002\\003\\004\\005\\006\\007\\b\\t\\n\\011\\012\\r\\014\\015\\016\\017\\018\\019\\020\\021\\022\\023\\024\\025\\026\\027\\028\\029\\030\\031 !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\127\\128\\129\\130\\131\\132\\133\\134\\135\\136\\137\\138\\139\\140\\141\\142\\143\\144\\145\\146\\147\\148\\149\\150\\151\\152\\153\\154\\155\\156\\157\\158\\159\\160\\161\\162\\163\\164\\165\\166\\167\\168\\169\\170\\171\\172\\173\\174\\175\\176\\177\\178\\179\\180\\181\\182\\183\\184\\185\\186\\187\\188\\189\\190\\191\\192\\193\\194\\195\\196\\197\\198\\199\\200\\201\\202\\203\\204\\205\\206\\207\\208\\209\\210\\211\\212\\213\\214\\215\\216\\217\\218\\219\\220\\221\\222\\223\\224\\225\\226\\227\\228\\229\\230\\231\\232\\233\\234\\235\\236\\237\\238\\239\\240\\241\\242\\243\\244\\245\\246\\247\\248\\249\\250\\251\\252\\253\\254\\255"
144+
];
145+
}
146+
];
147+
148+
var suites = [
149+
/* :: */0,
150+
suites_001,
151+
/* [] */0
152+
];
153+
154+
Mt.from_pair_suites("complex_if_test.ml", suites);
155+
156+
exports.fib = fib;
157+
exports.escaped = escaped;
158+
exports.string_escaped = string_escaped;
159+
exports.suites = suites;
160+
/* Not a pure module */

jscomp/test/complex_if_test.ml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
let rec fib = function
2+
| 1 | 23 -> 11111123
3+
| n -> fib (n - 1 ) + fib (n - 2)
4+
5+
open Bytes
6+
external char_code: char -> int = "%identity"
7+
external char_chr: int -> char = "%identity"
8+
9+
10+
let escaped s =
11+
let n = ref 0 in
12+
for i = 0 to length s - 1 do
13+
n := !n +
14+
(match unsafe_get s i with
15+
| '\"' | '\\' | '\n' | '\t' | '\r' | '\b' -> 2
16+
| ' ' .. '~' -> 1
17+
| _ -> 4)
18+
done;
19+
if !n = length s then copy s else begin
20+
let s' = create !n in
21+
n := 0;
22+
for i = 0 to length s - 1 do
23+
begin match unsafe_get s i with
24+
| ('\"' | '\\') as c ->
25+
unsafe_set s' !n '\\'; incr n; unsafe_set s' !n c
26+
| '\n' ->
27+
unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'n'
28+
| '\t' ->
29+
unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 't'
30+
| '\r' ->
31+
unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'r'
32+
| '\b' ->
33+
unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'b'
34+
| (' ' .. '~') as c -> unsafe_set s' !n c
35+
| c ->
36+
let a = char_code c in
37+
unsafe_set s' !n '\\';
38+
incr n;
39+
unsafe_set s' !n (char_chr (48 + a / 100));
40+
incr n;
41+
unsafe_set s' !n (char_chr (48 + (a / 10) mod 10));
42+
incr n;
43+
unsafe_set s' !n (char_chr (48 + a mod 10));
44+
end;
45+
incr n
46+
done;
47+
s'
48+
end
49+
let string_escaped s = Bytes.to_string (escaped (Bytes.of_string s ))
50+
51+
52+
(* let s = (let v = ref "" in for i = 0 to 255 do v := !v ^ (String.make 1 (Char.chr i)) done ; !v);; *)
53+
let suites = Mt.[
54+
"complete_escape", (fun _ ->
55+
Eq( string_escaped "\000\001\002\003\004\005\006\007\b\t\n\011\012\r\014\015\016\017\018\019\020\021\022\023\024\025\026\027\028\029\030\031 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\127\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255", "\\000\\001\\002\\003\\004\\005\\006\\007\\b\\t\\n\\011\\012\\r\\014\\015\\016\\017\\018\\019\\020\\021\\022\\023\\024\\025\\026\\027\\028\\029\\030\\031 !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\127\\128\\129\\130\\131\\132\\133\\134\\135\\136\\137\\138\\139\\140\\141\\142\\143\\144\\145\\146\\147\\148\\149\\150\\151\\152\\153\\154\\155\\156\\157\\158\\159\\160\\161\\162\\163\\164\\165\\166\\167\\168\\169\\170\\171\\172\\173\\174\\175\\176\\177\\178\\179\\180\\181\\182\\183\\184\\185\\186\\187\\188\\189\\190\\191\\192\\193\\194\\195\\196\\197\\198\\199\\200\\201\\202\\203\\204\\205\\206\\207\\208\\209\\210\\211\\212\\213\\214\\215\\216\\217\\218\\219\\220\\221\\222\\223\\224\\225\\226\\227\\228\\229\\230\\231\\232\\233\\234\\235\\236\\237\\238\\239\\240\\241\\242\\243\\244\\245\\246\\247\\248\\249\\250\\251\\252\\253\\254\\255"
56+
)
57+
)
58+
]
59+
;; Mt.from_pair_suites __FILE__ suites

jscomp/test/lib_js_test.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ let () =
99
end
1010

1111
let suites = Mt.[
12-
"anything_to_string", (fun _ -> Eq("3", Js.anything_to_string 3 ))
12+
"anything_to_string", (fun _ -> Eq("3", Js.anything_to_string 3 ));
13+
(* in js, array is printed as {[ 1,2 ]} without brackets *)
14+
(* "array_to_string", (fun _ -> Eq("[0]", Js.anything_to_string [|0|])) *)
1315
]
1416

1517
;; Mt.from_pair_suites __FILE__ suites

jscomp/test/test.mllib

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,4 @@ lib_js_test
153153
small_inline_test
154154
ari_regress_test
155155
record_with_test
156-
complex_if
156+
complex_if_test

0 commit comments

Comments
 (0)