mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-27 00:28:10 +00:00
148 lines
4.0 KiB
Python
148 lines
4.0 KiB
Python
|
from common import *
|
||
|
|
||
|
from apps.nem.mosaic import *
|
||
|
|
||
|
|
||
|
class TestNemTransactionMosaicCanonicalization(unittest.TestCase):
|
||
|
|
||
|
def test_nem_transaction_mosaic_canonicalization(self):
|
||
|
a = NEMMosaic()
|
||
|
a.namespace = 'abc'
|
||
|
a.quantity = 3
|
||
|
a.mosaic = 'mosaic'
|
||
|
b = NEMMosaic()
|
||
|
b.namespace = 'abc'
|
||
|
b.quantity = 4
|
||
|
b.mosaic = 'a'
|
||
|
c = NEMMosaic()
|
||
|
c.namespace = 'zzz'
|
||
|
c.quantity = 3
|
||
|
c.mosaic = 'mosaic'
|
||
|
d = NEMMosaic()
|
||
|
d.namespace = 'abc'
|
||
|
d.quantity = 8
|
||
|
d.mosaic = 'mosaic'
|
||
|
e = NEMMosaic()
|
||
|
e.namespace = 'aaa'
|
||
|
e.quantity = 1
|
||
|
e.mosaic = 'mosaic'
|
||
|
f = NEMMosaic()
|
||
|
f.namespace = 'aaa'
|
||
|
f.quantity = 1
|
||
|
f.mosaic = 'mosaicz'
|
||
|
g = NEMMosaic()
|
||
|
g.namespace = 'zzz'
|
||
|
g.quantity = 30
|
||
|
g.mosaic = 'mosaic'
|
||
|
|
||
|
res = nem_canonicalize_mosaics([a, b, c, d, e, f, g])
|
||
|
self.assertEqual(res, [e, f, b, a, c])
|
||
|
self.assertEqual(res[2].quantity, b.quantity)
|
||
|
self.assertEqual(res[3].quantity, 3 + 8) # a + d
|
||
|
self.assertEqual(res[4].quantity, 3 + 30) # c + g
|
||
|
|
||
|
def test_nem_transaction_mosaic_merge(self):
|
||
|
a = NEMMosaic()
|
||
|
a.namespace = 'abc'
|
||
|
a.quantity = 1
|
||
|
a.mosaic = 'mosaic'
|
||
|
b = NEMMosaic()
|
||
|
b.namespace = 'abc'
|
||
|
b.quantity = 1
|
||
|
b.mosaic = 'mosaic'
|
||
|
|
||
|
merged = nem_merge_mosaics([a, b])
|
||
|
self.assertEqual(merged[0].quantity, 2)
|
||
|
self.assertEqual(len(merged), 1)
|
||
|
|
||
|
a.quantity = 1
|
||
|
b.quantity = 10
|
||
|
merged = nem_merge_mosaics([a, b])
|
||
|
self.assertEqual(merged[0].quantity, 11)
|
||
|
|
||
|
a.namespace = 'abcdef'
|
||
|
merged = nem_merge_mosaics([a, b])
|
||
|
self.assertEqual(len(merged), 2)
|
||
|
|
||
|
c = NEMMosaic()
|
||
|
c.namespace = 'abc'
|
||
|
c.mosaic = 'xxx'
|
||
|
c.quantity = 2
|
||
|
merged = nem_merge_mosaics([a, b, c])
|
||
|
self.assertEqual(len(merged), 3)
|
||
|
|
||
|
a.namespace = 'abcdef'
|
||
|
a.quantity = 1
|
||
|
a.mosaic = 'mosaic'
|
||
|
b.namespace = 'abc'
|
||
|
b.quantity = 2
|
||
|
b.mosaic = 'mosaic'
|
||
|
c.namespace = 'abc'
|
||
|
c.mosaic = 'mosaic'
|
||
|
c.quantity = 3
|
||
|
merged = nem_merge_mosaics([a, b, c])
|
||
|
self.assertEqual(merged[0].quantity, 1)
|
||
|
self.assertEqual(merged[1].quantity, 5)
|
||
|
self.assertEqual(len(merged), 2)
|
||
|
|
||
|
a.namespace = 'abc'
|
||
|
a.quantity = 1
|
||
|
a.mosaic = 'mosaic'
|
||
|
b.namespace = 'abc'
|
||
|
b.quantity = 2
|
||
|
b.mosaic = 'mosaic'
|
||
|
c.namespace = 'abc'
|
||
|
c.mosaic = 'mosaic'
|
||
|
c.quantity = 3
|
||
|
merged = nem_merge_mosaics([a, b, c])
|
||
|
self.assertEqual(merged[0].quantity, 6)
|
||
|
self.assertEqual(len(merged), 1)
|
||
|
|
||
|
def test_nem_transaction_mosaic_sort(self):
|
||
|
a = NEMMosaic()
|
||
|
a.namespace = 'abcz'
|
||
|
a.quantity = 1
|
||
|
a.mosaic = 'mosaic'
|
||
|
b = NEMMosaic()
|
||
|
b.namespace = 'abca'
|
||
|
b.quantity = 1
|
||
|
b.mosaic = 'mosaic'
|
||
|
res = nem_sort_mosaics([a, b])
|
||
|
self.assertEqual(res, [b, a])
|
||
|
|
||
|
a.namespace = ''
|
||
|
b.namespace = 'a.b.c'
|
||
|
res = nem_sort_mosaics([a, b])
|
||
|
self.assertEqual(res, [a, b])
|
||
|
|
||
|
a.namespace = 'z.z.z'
|
||
|
b.namespace = 'a.b.c'
|
||
|
res = nem_sort_mosaics([a, b])
|
||
|
self.assertEqual(res, [b, a])
|
||
|
|
||
|
a.namespace = 'a'
|
||
|
b.namespace = 'a'
|
||
|
a.mosaic = 'mosaic'
|
||
|
b.mosaic = 'mosaic'
|
||
|
res = nem_sort_mosaics([a, b])
|
||
|
self.assertEqual(res, [a, b])
|
||
|
|
||
|
a.mosaic = 'www'
|
||
|
b.mosaic = 'aaa'
|
||
|
res = nem_sort_mosaics([a, b])
|
||
|
self.assertEqual(res, [b, a])
|
||
|
|
||
|
c = NEMMosaic()
|
||
|
c.namespace = 'a'
|
||
|
c.mosaic = 'zzz'
|
||
|
res = nem_sort_mosaics([a, b, c])
|
||
|
self.assertEqual(res, [b, a, c])
|
||
|
|
||
|
c.mosaic = 'bbb'
|
||
|
res = nem_sort_mosaics([a, b, c])
|
||
|
self.assertEqual(res, [b, c, a])
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|