Repository navigation
Expand file tree
/
Copy pathoperators.rue
More file actions
107 lines (95 loc) · 3.16 KB
/
Copy pathoperators.rue
File metadata and controls
107 lines (95 loc) · 3.16 KB
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
107
test fn arithmetic() {
assert +42 == 42;
assert -42 == 0 - 42;
assert 100 + 200 == 300;
assert "a" + "b" == "ab";
assert INFINITY_G1 + INFINITY_G1 == INFINITY_G1;
assert INFINITY_G2 + INFINITY_G2 == INFINITY_G2;
assert 100 - 200 == -100;
assert INFINITY_G1 - INFINITY_G1 == INFINITY_G1;
assert INFINITY_G2 - INFINITY_G2 == INFINITY_G2;
assert 100 * 2 == 200;
assert INFINITY_G1 * 2 == INFINITY_G1;
assert INFINITY_G2 * 2 == INFINITY_G2;
assert 200 / 3 == 66;
assert 200 % 3 == 2;
assert 66 * 3 + 2 == 200;
assert -200 / 3 == -67;
assert -200 % 3 == 1;
assert -67 * 3 + 1 == -200;
}
test fn bls_scalar_multiplication() {
let g1 = 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb as PublicKey;
assert g1 == pubkey_for_exp(0x0000000000000000000000000000000000000000000000000000000000000001);
assert g1 * 1 == g1;
assert g1 * 2 == g1 + g1;
let g1_times_2 = 0xa572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e as PublicKey;
assert g1 * 2 == g1_times_2;
let g1_times_3 = pubkey_for_exp(
0x0000000000000000000000000000000000000000000000000000000000000003,
);
assert g1 * 3 == g1_times_3;
assert g1 * 0 == INFINITY_G1;
assert g1 * -1 == -g1;
let g2 = 0x93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 as Signature;
assert g2 * 1 == g2;
assert g2 * 2 == g2 + g2;
let g2_times_2 = 0xaa4edef9c1ed7f729f520e47730a124fd70662a904ba1074728114d1031e1572c6c886f6b57ec72a6178288c47c335771638533957d540a9d2370f17cc7ed5863bc0b995b8825e0ee1ea1e1e4d00dbae81f14b0bf3611b78c952aacab827a053 as Signature;
assert g2 * 2 == g2_times_2;
assert g2 * 0 == INFINITY_G2;
assert g2 * -1 == -g2;
}
test fn comparison() {
assert 100 == 100;
assert !(100 == 101);
assert 100 != 101;
assert !(100 != 100);
assert 100 > 50;
assert 50 < 100;
assert 100 >= 50;
assert 100 >= 100;
assert !(50 >= 100);
assert 101 >= 100;
assert !(99 >= 100);
assert 50 <= 100;
assert 100 <= 100;
assert !(100 <= 50);
assert 99 <= 100;
assert !(101 <= 100);
assert "a" == "a";
assert !("a" == "b");
assert "a" != "b";
assert !("a" != "a");
assert "b" > "a";
assert "a" < "b";
assert "b" >= "a";
assert "b" >= "b";
assert !("a" >= "b");
assert "ab" >= "aa";
assert !("aa" >= "ab");
assert "a" <= "b";
assert "a" <= "a";
assert !("b" <= "a");
assert "aa" <= "ab";
assert !("ab" <= "aa");
assert true;
assert !false;
assert true && true;
assert true & true;
assert true || false;
assert true | false;
assert false || true;
assert false | true;
}
test fn bitwise() {
assert ~10 == -11;
assert 50 >> 2 == 12;
assert 50 << 2 == 200;
assert -50 >>> 1 == 103;
assert 50 >>> 1 == 25;
assert -50 >>> -1 == 412;
assert 50 >>> -1 == 100;
assert 10 & 5 == 0;
assert 10 | 5 == 15;
assert 10 ^ 5 == 15;
}