|
33 | 33 | from keri.kering import Protocols, Protocolage, Ilkage, Ilks, TraitDex
|
34 | 34 |
|
35 | 35 | from keri.help import helping
|
36 |
| -from keri.help.helping import (sceil, intToB64, intToB64b, b64ToInt, codeB64ToB2, codeB2ToB64, |
| 36 | +from keri.help.helping import (sceil, intToB64, intToB64b, b64ToInt, |
| 37 | + codeB64ToB2, codeB2ToB64, |
37 | 38 | B64_CHARS, Reb64, nabSextets)
|
38 | 39 |
|
39 | 40 | from keri import core
|
40 | 41 | from keri.core import coring
|
41 | 42 | from keri.core.coring import (Saids, Sadder, Tholder, Seqner, NumDex, Number,
|
42 | 43 | Dater, Bexter, Texter,
|
43 |
| - TagDex, Tagger, Ilker, Traitor, Labeler, |
| 44 | + TagDex, Tagger, Ilker, Traitor, Labeler, LabelDex, |
44 | 45 | Verser, Versage, )
|
45 | 46 | from keri.core.coring import Kindage, Kinds
|
46 | 47 | from keri.core.coring import (Sizage, MtrDex, Matter)
|
@@ -4274,11 +4275,186 @@ def test_labeler():
|
4274 | 4275 | """
|
4275 | 4276 | Test Labeler subclass of Matter
|
4276 | 4277 | """
|
4277 |
| - |
4278 |
| - |
4279 | 4278 | with pytest.raises(EmptyMaterialError):
|
4280 | 4279 | labeler = Labeler() # defaults
|
4281 | 4280 |
|
| 4281 | + # test taggable label |
| 4282 | + label = 'z' |
| 4283 | + raw = b'' |
| 4284 | + code = LabelDex.Tag1 |
| 4285 | + qb64 = '0J_z' |
| 4286 | + qb2 = decodeB64(qb64) |
| 4287 | + |
| 4288 | + labeler = Labeler(label=label) |
| 4289 | + assert labeler.label == label |
| 4290 | + assert labeler.code == code |
| 4291 | + assert labeler.soft == label |
| 4292 | + assert labeler.raw == raw |
| 4293 | + assert labeler.qb64 == qb64 |
| 4294 | + assert labeler.qb2 == qb2 |
| 4295 | + |
| 4296 | + labeler = Labeler(raw=raw, code=code, soft=label) |
| 4297 | + assert labeler.label == label |
| 4298 | + |
| 4299 | + labeler = Labeler(qb64=qb64) |
| 4300 | + assert labeler.label == label |
| 4301 | + |
| 4302 | + labeler = Labeler(qb2=qb2) |
| 4303 | + assert labeler.label == label |
| 4304 | + |
| 4305 | + |
| 4306 | + # Test all sizes taggable labels |
| 4307 | + labels = ('A', 'AB', 'ABC', 'ABCD', 'ABCDE', 'ABCDEF', 'ABCDEFG', 'ABCDEFGH', |
| 4308 | + 'ABCDEFGHI', 'ABCDEFGHIJ') |
| 4309 | + |
| 4310 | + raw = b'' |
| 4311 | + for i, label in enumerate(labels): |
| 4312 | + code = astuple(LabelDex)[i] |
| 4313 | + xs = Matter._xtraSize(code) |
| 4314 | + qb64 = code + ('_' * xs) + label |
| 4315 | + qb2 = decodeB64(qb64) |
| 4316 | + |
| 4317 | + labeler = Labeler(label=label) |
| 4318 | + assert labeler.label == label |
| 4319 | + assert labeler.code == code |
| 4320 | + assert labeler.soft == label |
| 4321 | + assert labeler.raw == raw |
| 4322 | + assert labeler.qb64 == qb64 |
| 4323 | + assert labeler.qb2 == qb2 |
| 4324 | + |
| 4325 | + labeler = Labeler(raw=raw, code=code, soft=label) |
| 4326 | + assert labeler.label == label |
| 4327 | + |
| 4328 | + labeler = Labeler(qb64=qb64) |
| 4329 | + assert labeler.label == label |
| 4330 | + |
| 4331 | + labeler = Labeler(qb2=qb2) |
| 4332 | + assert labeler.label == label |
| 4333 | + |
| 4334 | + |
| 4335 | + # test bextable labels |
| 4336 | + label = 'zyxwvutsrqponm' |
| 4337 | + code = LabelDex.StrB64_L1 |
| 4338 | + qb64 = '5AAEAAzyxwvutsrqponm' |
| 4339 | + qb2 = decodeB64(qb64) |
| 4340 | + raw = qb2[4:] # skip 3 for code and 1 for lead pad |
| 4341 | + |
| 4342 | + labeler = Labeler(label=label) |
| 4343 | + assert labeler.label == label |
| 4344 | + assert labeler.code == code |
| 4345 | + rs = (len(label) + len(label) % 4) // 4 |
| 4346 | + assert labeler.soft == intToB64(rs, 2) == 'AE' |
| 4347 | + assert labeler.raw == raw |
| 4348 | + assert labeler.qb64 == qb64 |
| 4349 | + assert labeler.qb2 == qb2 |
| 4350 | + |
| 4351 | + labeler = Labeler(raw=raw, code=code, soft=label) |
| 4352 | + assert labeler.label == label |
| 4353 | + |
| 4354 | + labeler = Labeler(qb64=qb64) |
| 4355 | + assert labeler.label == label |
| 4356 | + |
| 4357 | + labeler = Labeler(qb2=qb2) |
| 4358 | + assert labeler.label == label |
| 4359 | + |
| 4360 | + # test textable labels |
| 4361 | + # fixed size short |
| 4362 | + label = '@' |
| 4363 | + code = LabelDex.Label1 |
| 4364 | + raw = label.encode() |
| 4365 | + qb64 = 'VABA' |
| 4366 | + qb2 = decodeB64(qb64) # b'T\x00@' |
| 4367 | + |
| 4368 | + labeler = Labeler(label=label) |
| 4369 | + assert labeler.label == label |
| 4370 | + assert labeler.code == code |
| 4371 | + assert labeler.soft == '' |
| 4372 | + assert labeler.raw == raw |
| 4373 | + assert labeler.qb64 == qb64 |
| 4374 | + assert labeler.qb2 == qb2 |
| 4375 | + |
| 4376 | + labeler = Labeler(raw=raw, code=code) |
| 4377 | + assert labeler.label == label |
| 4378 | + |
| 4379 | + labeler = Labeler(qb64=qb64) |
| 4380 | + assert labeler.label == label |
| 4381 | + |
| 4382 | + labeler = Labeler(qb2=qb2) |
| 4383 | + assert labeler.label == label |
| 4384 | + |
| 4385 | + label = '!$' |
| 4386 | + code = LabelDex.Label2 |
| 4387 | + raw = label.encode() |
| 4388 | + qb64 = 'WCEk' |
| 4389 | + qb2 = decodeB64(qb64) # b'X!$' |
| 4390 | + |
| 4391 | + labeler = Labeler(label=label) |
| 4392 | + assert labeler.label == label |
| 4393 | + assert labeler.code == code |
| 4394 | + assert labeler.soft == '' |
| 4395 | + assert labeler.raw == raw |
| 4396 | + assert labeler.qb64 == qb64 |
| 4397 | + assert labeler.qb2 == qb2 |
| 4398 | + |
| 4399 | + labeler = Labeler(raw=raw, code=code) |
| 4400 | + assert labeler.label == label |
| 4401 | + |
| 4402 | + labeler = Labeler(qb64=qb64) |
| 4403 | + assert labeler.label == label |
| 4404 | + |
| 4405 | + labeler = Labeler(qb2=qb2) |
| 4406 | + assert labeler.label == label |
| 4407 | + |
| 4408 | + |
| 4409 | + # variable sized |
| 4410 | + label = '#yxwvutsrqponm' |
| 4411 | + code = LabelDex.Bytes_L1 |
| 4412 | + raw = label.encode() |
| 4413 | + qb64 = '5BAFACN5eHd2dXRzcnFwb25t' |
| 4414 | + qb2 = decodeB64(qb64) |
| 4415 | + |
| 4416 | + |
| 4417 | + labeler = Labeler(label=label) |
| 4418 | + assert labeler.label == label |
| 4419 | + assert labeler.code == code |
| 4420 | + assert labeler.soft == 'AF' |
| 4421 | + assert labeler.raw == raw |
| 4422 | + assert labeler.qb64 == qb64 |
| 4423 | + assert labeler.qb2 == qb2 |
| 4424 | + |
| 4425 | + labeler = Labeler(raw=raw, code=code) |
| 4426 | + assert labeler.label == label |
| 4427 | + |
| 4428 | + labeler = Labeler(qb64=qb64) |
| 4429 | + assert labeler.label == label |
| 4430 | + |
| 4431 | + labeler = Labeler(qb2=qb2) |
| 4432 | + assert labeler.label == label |
| 4433 | + |
| 4434 | + # test base64 that starts with 'A' get encoded as textable, is not bextable |
| 4435 | + label = 'Ayxwvutsrqponm' |
| 4436 | + code = LabelDex.Bytes_L1 |
| 4437 | + raw = label.encode() |
| 4438 | + qb64 = '5BAFAEF5eHd2dXRzcnFwb25t' |
| 4439 | + qb2 = decodeB64(qb64) |
| 4440 | + |
| 4441 | + |
| 4442 | + labeler = Labeler(label=label) |
| 4443 | + assert labeler.label == label |
| 4444 | + assert labeler.code == code |
| 4445 | + assert labeler.soft == 'AF' |
| 4446 | + assert labeler.raw == raw |
| 4447 | + assert labeler.qb64 == qb64 |
| 4448 | + assert labeler.qb2 == qb2 |
| 4449 | + |
| 4450 | + labeler = Labeler(raw=raw, code=code) |
| 4451 | + assert labeler.label == label |
| 4452 | + |
| 4453 | + labeler = Labeler(qb64=qb64) |
| 4454 | + assert labeler.label == label |
| 4455 | + |
| 4456 | + labeler = Labeler(qb2=qb2) |
| 4457 | + assert labeler.label == label |
4282 | 4458 |
|
4283 | 4459 | """ Done Test """
|
4284 | 4460 |
|
|
0 commit comments