Skip to content

Commit 67b6845

Browse files
committed
添加单元测试
1 parent a2622c6 commit 67b6845

File tree

2 files changed

+69
-24
lines changed

2 files changed

+69
-24
lines changed

wisdom-core/src/main/java/org/wisdom/vm/abi/SafeMath.java

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,38 @@ public static long mul(long x, long y) {
3131
}
3232

3333
public static void main(String[] args) {
34+
// 正常加法
35+
assertTrue(add(Long.MAX_VALUE, 0) == Long.MAX_VALUE);
36+
assertTrue(add(0, Long.MAX_VALUE) == Long.MAX_VALUE);
37+
assertTrue(add(Long.MAX_VALUE - 1, 1) == Long.MAX_VALUE);
38+
assertTrue(add(0, 0) == 0);
39+
assertTrue(add(0, 1) == 1);
40+
assertTrue(add(1, 0) == 1);
41+
assertTrue(add(1, 1) == 2);
42+
3443
// 加法溢出
35-
assertException(() -> {
36-
add(1, Long.MAX_VALUE);
37-
});
38-
assertException(() -> {
39-
add(Long.MAX_VALUE, 1);
40-
});
44+
assertException(() -> add(1, Long.MAX_VALUE));
45+
assertException(() -> add(Long.MAX_VALUE, 1));
46+
assertException(() -> add(-1, 0));
47+
48+
// 普通减法
49+
assertTrue(sub(1, 0) == 1);
50+
assertException(() -> sub(0, 1));
51+
assertTrue(sub(Long.MAX_VALUE, 1) == Long.MAX_VALUE - 1);
52+
assertTrue(sub(Long.MAX_VALUE, 0) == Long.MAX_VALUE);
53+
4154
// 减法溢出
42-
assertException(() -> {
43-
sub(1, 2);
44-
});
55+
assertException(() -> sub(1, 2));
56+
57+
assertException(() -> sub(-1, 0));
58+
59+
assertTrue(mul(1, 1) == 1);
60+
assertTrue(mul(1, Long.MAX_VALUE) == Long.MAX_VALUE);
61+
assertTrue(mul(0, Long.MAX_VALUE) == 0);
62+
4563
// 乘法溢出
46-
assertException(() -> {
47-
mul(Long.MAX_VALUE/2 + 1, 2);
48-
});
64+
assertException(() -> mul(Long.MAX_VALUE/2 + 1, 2));
65+
assertException(() -> mul(-1, 1));
4966
}
5067

5168
public static void assertException(Runnable r){
@@ -58,4 +75,9 @@ public static void assertException(Runnable r){
5875
if(e0 == null)
5976
throw new RuntimeException("assert failed");
6077
}
78+
79+
public static void assertTrue(boolean b){
80+
if(!b)
81+
throw new RuntimeException("assert failed");
82+
}
6183
}

wisdom-core/src/main/java/org/wisdom/vm/abi/Uint256.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -290,21 +290,39 @@ public long longValue(){
290290
}
291291

292292
public static void main(String[] args) {
293+
// 正常加法
294+
assertTrue(MAX_U256.safeAdd(Uint256.ZERO).equals(MAX_U256));
295+
assertTrue(Uint256.ZERO.safeAdd(MAX_U256).equals(MAX_U256));
296+
assertTrue(MAX_U256.safeSub(Uint256.ONE).safeAdd(Uint256.ONE).equals(MAX_U256));
297+
assertTrue(Uint256.ZERO.safeAdd(Uint256.ZERO).equals(Uint256.ZERO));
298+
assertTrue(Uint256.ZERO.safeAdd(Uint256.ONE).equals(Uint256.ONE));
299+
assertTrue(Uint256.ONE.safeAdd(Uint256.ZERO).equals(Uint256.ONE));
300+
assertTrue(Uint256.ONE.safeAdd(Uint256.ONE).equals(Uint256.of(2)));
301+
293302
// 加法溢出
294-
assertException(() -> {
295-
MAX_U256.safeAdd(ONE);
296-
});
297-
assertException(() -> {
298-
ONE.safeAdd(MAX_U256);
299-
});
303+
assertException(() -> Uint256.ONE.safeAdd(Uint256.MAX_U256));
304+
assertException(() -> Uint256.MAX_U256.safeAdd(Uint256.ONE));
305+
assertException(() -> Uint256.MAX_U256.safeSub(Uint256.ONE).safeAdd(Uint256.of(2)));
306+
307+
// 普通减法
308+
assertTrue(Uint256.ONE.safeSub(Uint256.ZERO).equals(Uint256.ONE));
309+
assertException(() -> Uint256.ZERO.safeSub(Uint256.ONE));
310+
assertTrue(Uint256.MAX_U256.safeSub(Uint256.ONE).equals(Uint256.of("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", 16)));
311+
assertTrue(Uint256.MAX_U256.safeSub(Uint256.ZERO).equals(Uint256.MAX_U256));
312+
300313
// 减法溢出
301-
assertException(() -> {
302-
ONE.safeSub(Uint256.of(2));
303-
});
314+
assertException(() -> Uint256.ONE.safeSub(Uint256.of(2)));
315+
316+
317+
assertTrue(Uint256.ONE.safeMul(Uint256.ONE).equals(Uint256.ONE));
318+
assertTrue(Uint256.MAX_U256.safeMul(Uint256.ONE).equals(Uint256.MAX_U256));
319+
assertTrue(Uint256.MAX_U256.safeMul(Uint256.ZERO).equals(Uint256.ZERO));
320+
304321
// 乘法溢出
305-
assertException(() -> {
306-
MAX_U256.safeMul(Uint256.of(2));
307-
});
322+
assertException(() -> Uint256.MAX_U256.div(Uint256.of(2)).add(Uint256.ONE).safeMul(Uint256.of(2)));
323+
324+
// 除法溢出
325+
assertException(() -> Uint256.ONE.div(Uint256.ZERO));
308326
}
309327

310328
public static void assertException(Runnable r){
@@ -317,4 +335,9 @@ public static void assertException(Runnable r){
317335
if(e0 == null)
318336
throw new RuntimeException("assert failed");
319337
}
338+
339+
public static void assertTrue(boolean b){
340+
if(!b)
341+
throw new RuntimeException("assert failed");
342+
}
320343
}

0 commit comments

Comments
 (0)