-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextend.go
47 lines (37 loc) · 1.55 KB
/
extend.go
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
package easyfl
var extendWithUtilityFunctions = []*ExtendedFunctionData{
{"false", "0x"},
{"true", "0xff"},
{"require", "or($0,$1)"},
{"lessOrEqualThan", "or(lessThan($0,$1),equal($0,$1))"},
{"greaterThan", "not(lessOrEqualThan($0,$1))"},
{"greaterOrEqualThan", "not(lessThan($0,$1))"},
{"bytecode", "$$0"},
{"evalArgumentBytecode", "eval(parseArgumentBytecode($0,$1,$2))"},
{"lessThanUint", "lessThan(uint64Bytes($0), uint64Bytes($1))"},
{"equalUint", "equal(uint64Bytes($0), uint64Bytes($1))"},
{"max", "if(lessThan($0,$1),$1,$0)"},
{"min", "if(lessThan($0,$1),$0,$1)"},
}
func (lib *Library) extendBase() {
lib.UpgradeWithExtensions(extendWithUtilityFunctions...)
lib.MustError("require(nil, !!!requirement_failed)", "requirement failed")
lib.MustEqual("require(true, !!!something_wrong)", "true")
lib.MustTrue("equalUint(100,100)")
lib.MustTrue("equalUint(100,u32/100)")
lib.MustTrue("not(equalUint(100,u32/1337))")
lib.MustError("equalUint(nil, 5)", "wrong size of parameter")
lib.MustTrue("lessThanUint(10,u32/100)")
lib.MustTrue("not(lessThanUint(100,100))")
lib.MustTrue("not(lessThanUint(u16/100,u64/100))")
lib.MustTrue("lessThanUint(0,u64/1)")
lib.MustError("lessThanUint(nil, 5)", "wrong size of parameter")
lib.MustEqual("max(1,100)", "100")
lib.MustEqual("max(100,1)", "100")
lib.MustEqual("min(1,100)", "1")
lib.MustEqual("min(100,1)", "1")
lib.MustEqual("max(u32/1,u32/100)", "u32/100")
lib.MustEqual("max(u32/100,u32/1)", "u32/100")
lib.MustEqual("min(u32/1,u32/100)", "u32/1")
lib.MustEqual("min(u32/100,u32/1)", "u32/1")
}