MCPcopy Create free account
hub / github.com/ElementsProject/elements / field_size_test

Method field_size_test

src/minisketch/tests/pyminisketch.py:142–171  ·  view source on GitHub ↗

Test operations for given field_size.

(self, field_size)

Source from the content-addressed store, hash-verified

140 """Test class for basic arithmetic properties of GF2Ops."""
141
142 def field_size_test(self, field_size):
143 """Test operations for given field_size."""
144
145 gf = GF2Ops(field_size)
146 for i in range(100):
147 x = random.randrange(1 << field_size)
148 y = random.randrange(1 << field_size)
149 x2 = gf.mul2(x)
150 xy = gf.mul(x, y)
151 self.assertEqual(x2, gf.mul(x, 2)) # mul2(x) == x*2
152 self.assertEqual(x2, gf.mul(2, x)) # mul2(x) == 2*x
153 self.assertEqual(xy == 0, x == 0 or y == 0)
154 self.assertEqual(xy == x, y == 1 or x == 0)
155 self.assertEqual(xy == y, x == 1 or y == 0)
156 self.assertEqual(xy, gf.mul(y, x)) # x*y == y*x
157 if i < 10:
158 xp = x
159 for _ in range(field_size):
160 xp = gf.sqr(xp)
161 self.assertEqual(xp, x) # x^(2^field_size) == x
162 if y != 0:
163 yi = gf.inv(y)
164 self.assertEqual(y == yi, y == 1) # y==1/x iff y==1
165 self.assertEqual(gf.mul(y, yi), 1) # y*(1/y) == 1
166 yii = gf.inv(yi)
167 self.assertEqual(y, yii) # 1/(1/y) == y
168 if x != 0:
169 xi = gf.inv(x)
170 xyi = gf.inv(xy)
171 self.assertEqual(xyi, gf.mul(xi, yi)) # (1/x)*(1/y) == 1/(x*y)
172
173 def test(self):
174 """Run tests."""

Callers 1

testMethod · 0.95

Calls 6

mul2Method · 0.95
mulMethod · 0.95
sqrMethod · 0.95
invMethod · 0.95
GF2OpsClass · 0.85
randrangeMethod · 0.80

Tested by

no test coverage detected