-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtest_list_ext.mligo
106 lines (91 loc) · 3.76 KB
/
test_list_ext.mligo
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
(* MIT License
Copyright (c) 2022 Marigold <[email protected]>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. *)
#import "list_ext.mligo" "L"
#import "../../lib/lib.mligo" "Breath"
let empty : int list = []
let case_cons_1 =
Breath.Model.case
"cons"
"cons of a value to an empty list should produce a list of one element"
(fun (_: Breath.Logger.level) ->
let expected = [1] in
let computed = L.cons 1 empty in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_cons_2 =
Breath.Model.case
"cons"
"cons of a value to a filled list should produce a new list"
(fun (_: Breath.Logger.level) ->
let expected = [1; 2; 3; 4] in
let computed = L.cons 1 [2; 3; 4] in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_rev_1 =
Breath.Model.case
"rev"
"rev an empty list produce an empty list"
(fun (_: Breath.Logger.level) ->
let expected = empty in
let computed = L.rev expected in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_rev_2 =
Breath.Model.case
"rev"
"rev a filled list should produce the reversed list"
(fun (_: Breath.Logger.level) ->
let expected = [1; 2; 3] in
let computed = L.rev [3; 2; 1] in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_concat_1 =
Breath.Model.case
"concat"
"concat two empty list should produce an empty list"
(fun (_: Breath.Logger.level) ->
let expected = empty in
let computed = L.concat expected expected in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_concat_2 =
Breath.Model.case
"concat"
"concat an empty list to a regular list should produce the same regular list"
(fun (_: Breath.Logger.level) ->
let expected = [1] in
let computed = L.concat empty [1] in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_concat_3 =
Breath.Model.case
"concat"
"concat a regular list to an empty list should produce the same regular list"
(fun (_: Breath.Logger.level) ->
let expected = [1] in
let computed = L.concat [1] empty in
Breath.Assert.is_true "should be equal"(expected = computed))
let case_concat_4 =
Breath.Model.case
"concat"
"concat two regular list should produce a new list"
(fun (_: Breath.Logger.level) ->
let expected = [1; 2; 3; 4; 5; 6] in
let computed = L.concat [1; 2; 3] [4; 5; 6] in
Breath.Assert.is_true "should be equal"(expected = computed))
let () =
Breath.Model.run_suites Trace [
Breath.Model.suite "A simple list extension"
[ case_cons_1; case_cons_2; case_rev_1; case_rev_2;
case_concat_1; case_concat_2; case_concat_3;
case_concat_4 ]
]