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()