File: Test099.ML

package info (click to toggle)
polyml 5.6-8
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 31,892 kB
  • ctags: 34,453
  • sloc: cpp: 44,983; ansic: 24,520; asm: 14,850; sh: 11,730; makefile: 551; exp: 484; python: 253; awk: 91; sed: 9
file content (51 lines) | stat: -rw-r--r-- 3,011 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(* Tests for functions added to the CharArray and CharArraySlice structures. *)
fun check f = if f() then () else raise Fail "Wrong";

val a = CharArray.tabulate (10, fn i => Char.chr(i+ Char.ord #"0"));
check(fn () => CharArray.vector a = "0123456789");
check(fn () => CharArray.findi (fn (_, #"3") => true | _ => false) a = SOME(3, #"3"));
check(fn () => not(isSome(CharArray.findi (fn (_, #"A") => true | _ => false) a)));
check(fn () => CharArray.find (fn #"3" => true | _ => false) a = SOME #"3");
check(fn () => not(isSome(CharArray.find (fn #"A" => true | _ => false) a)));
check(fn () => CharArray.exists (fn #"3" => true | _ => false) a);
check(fn () => not(CharArray.exists (fn #"A" => true | _ => false) a));
check(fn () => not(CharArray.all (fn #"3" => true | _ => false) a));
check(fn () => CharArray.all (fn x => x < #"A") a);
check(fn () => not(CharArray.all (fn x => x < #"9") a));
check(fn () => CharArray.collate Char.compare (a, a) = EQUAL);
val b = CharArray.array(10, #"0");
check(fn () => CharArray.vector b = CharVector.fromList(List.tabulate(10, fn _ => #"0")));
CharArray.copy{src = a, dst=b, di=0};
check(fn () => CharArray.vector b = "0123456789");
check(fn () => (CharArray.copy{src = a, dst=b, di=1}; false) handle Subscript => true);
check(fn () => CharArray.collate Char.compare (a, b) = EQUAL);
CharArray.update(a, 9, #"A");
check(fn () => CharArray.collate Char.compare (a, b) = GREATER);
CharArray.update(b, 2, #"B");
check(fn () => CharArray.collate Char.compare (a, b) = LESS);
check(fn () => CharArray.collate Char.compare (CharArray.array(0, #"0"), CharArray.array(0, #"0")) = EQUAL);
check(fn () => CharArray.collate Char.compare (CharArray.array(0, #"0"), a) = LESS);
check(fn () => CharArray.collate Char.compare (a, CharArray.array(0, #"0")) = GREATER);
check(fn () => CharArray.collate Char.compare (CharArray.array(1, #"0"), a) = LESS);
check(fn () => CharArray.collate Char.compare (CharArray.array(1, #"1"), a) = GREATER);

val sa = CharArraySlice.slice(a, 2, NONE);
val sb = CharArraySlice.slice(a, 6, SOME 3);
check(fn () => CharArraySlice.vector sa = "2345678A");
check(fn () => CharArraySlice.vector sb = "678");
check(fn () => (CharArraySlice.slice(a, 6, SOME 5); false) handle Subscript => true);

check(fn () => CharArraySlice.findi(fn (_, #"3") => true | _ => false) sa = SOME(1, #"3"));
check(fn () => not(isSome(CharArraySlice.findi(fn (_, #"3") => true | _ => false) sb)));
check(fn () => not(CharArraySlice.all (fn x => x < #"9") sa));
check(fn () => CharArraySlice.all (fn x => x < #"9") sb);
CharArraySlice.copy{src=sb, dst=a, di=1};
check(fn () => CharArray.vector a = "067845678A");
(* Check for overlapping areas. *)
CharArraySlice.copy{src=sb, dst=a, di=7};
check(fn () => CharArray.vector a = "0678456678");
check(fn () => CharArraySlice.vector sb = "667");
val sc = CharArraySlice.slice(a, 4, SOME 3);
check(fn () => CharArraySlice.vector sc = "456");
CharArraySlice.copy{src=sc, dst=a, di=3};
check(fn () => CharArray.vector a = "0674566678");