UNPKG

5.14 kBJavaScriptView Raw
1module.exports = `
2pragma solidity >=0.4.22 <0.7.0;
3
4library Assert {
5
6 event AssertionEvent(
7 bool passed,
8 string message
9 );
10
11 function ok(bool a, string memory message) public returns (bool result) {
12 result = a;
13 emit AssertionEvent(result, message);
14 }
15
16 function equal(uint a, uint b, string memory message) public returns (bool result) {
17 result = (a == b);
18 emit AssertionEvent(result, message);
19 }
20
21 function equal(int a, int b, string memory message) public returns (bool result) {
22 result = (a == b);
23 emit AssertionEvent(result, message);
24 }
25
26 function equal(bool a, bool b, string memory message) public returns (bool result) {
27 result = (a == b);
28 emit AssertionEvent(result, message);
29 }
30
31 // TODO: only for certain versions of solc
32 //function equal(fixed a, fixed b, string message) public returns (bool result) {
33 // result = (a == b);
34 // emit AssertionEvent(result, message);
35 //}
36
37 // TODO: only for certain versions of solc
38 //function equal(ufixed a, ufixed b, string message) public returns (bool result) {
39 // result = (a == b);
40 // emit AssertionEvent(result, message);
41 //}
42
43 function equal(address a, address b, string memory message) public returns (bool result) {
44 result = (a == b);
45 emit AssertionEvent(result, message);
46 }
47
48 function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
49 result = (a == b);
50 emit AssertionEvent(result, message);
51 }
52
53 function equal(string memory a, string memory b, string memory message) public returns (bool result) {
54 result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
55 emit AssertionEvent(result, message);
56 }
57
58 function notEqual(uint a, uint b, string memory message) public returns (bool result) {
59 result = (a != b);
60 emit AssertionEvent(result, message);
61 }
62
63 function notEqual(int a, int b, string memory message) public returns (bool result) {
64 result = (a != b);
65 emit AssertionEvent(result, message);
66 }
67
68 function notEqual(bool a, bool b, string memory message) public returns (bool result) {
69 result = (a != b);
70 emit AssertionEvent(result, message);
71 }
72
73 // TODO: only for certain versions of solc
74 //function notEqual(fixed a, fixed b, string message) public returns (bool result) {
75 // result = (a != b);
76 // emit AssertionEvent(result, message);
77 //}
78
79 // TODO: only for certain versions of solc
80 //function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
81 // result = (a != b);
82 // emit AssertionEvent(result, message);
83 //}
84
85 function notEqual(address a, address b, string memory message) public returns (bool result) {
86 result = (a != b);
87 emit AssertionEvent(result, message);
88 }
89
90 function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
91 result = (a != b);
92 emit AssertionEvent(result, message);
93 }
94
95 function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
96 result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
97 emit AssertionEvent(result, message);
98 }
99
100 /*----------------- Greater than --------------------*/
101 function greaterThan(uint a, uint b, string memory message) public returns (bool result) {
102 result = (a > b);
103 emit AssertionEvent(result, message);
104 }
105
106 function greaterThan(int a, int b, string memory message) public returns (bool result) {
107 result = (a > b);
108 emit AssertionEvent(result, message);
109 }
110 // TODO: safely compare between uint and int
111 function greaterThan(uint a, int b, string memory message) public returns (bool result) {
112 if(b < int(0)) {
113 // int is negative uint "a" always greater
114 result = true;
115 } else {
116 result = (a > uint(b));
117 }
118 emit AssertionEvent(result, message);
119 }
120 function greaterThan(int a, uint b, string memory message) public returns (bool result) {
121 if(a < int(0)) {
122 // int is negative uint "b" always greater
123 result = false;
124 } else {
125 result = (uint(a) > b);
126 }
127 emit AssertionEvent(result, message);
128 }
129 /*----------------- Lesser than --------------------*/
130 function lesserThan(uint a, uint b, string memory message) public returns (bool result) {
131 result = (a < b);
132 emit AssertionEvent(result, message);
133 }
134
135 function lesserThan(int a, int b, string memory message) public returns (bool result) {
136 result = (a < b);
137 emit AssertionEvent(result, message);
138 }
139 // TODO: safely compare between uint and int
140 function lesserThan(uint a, int b, string memory message) public returns (bool result) {
141 if(b < int(0)) {
142 // int is negative int "b" always lesser
143 result = false;
144 } else {
145 result = (a < uint(b));
146 }
147 emit AssertionEvent(result, message);
148 }
149
150 function lesserThan(int a, uint b, string memory message) public returns (bool result) {
151 if(a < int(0)) {
152 // int is negative int "a" always lesser
153 result = true;
154 } else {
155 result = (uint(a) < b);
156 }
157 emit AssertionEvent(result, message);
158 }
159}
160`