def test_pocb_color_kernel(self): # test the POBC color kernel pobc = POBColorDefinition( "testcolor", {'txhash': 'genesis', 'outindex': 0}) t = ColorDefinitionTester(pobc) test = t.test # genesis self.assertEqual(test([10001], [10001], [1], "genesis"), [1]) self.assertEqual(test([40001], [10001, 30000], [1], "genesis"), [1, None]) self.assertEqual(test([10000, 1], [10001], [1], "genesis"), [1]) pobc.genesis['outindex'] = 1 self.assertEqual(test([40001], [30000, 10001], [1], "genesis"), [None, 1]) pobc.genesis['outindex'] = 0 # simple transfer self.assertEqual(test([10001], [10001], [1]), [1]) # canonical split self.assertEqual(test([10002, 10003], [10005], [2, 3]), [5]) # canonical combine self.assertEqual(test([10005], [10002, 10003], [5]), [2, 3]) # null values before and after self.assertEqual(test([10001, 10002, 10003, 50000], [10001, 10005, 50000], [None, 2, 3, None]), [None, 5, None]) # ignore below-padding values self.assertEqual(test([10001, 10002, 10003, 50000, 100, 20000], [10001, 10005, 100, 70000, 100], [None, 2, 3, None]), [None, 5]) # color values don't add up the same self.assertEqual(test([10001, 10002, 10003, 10001, 50000], [10001, 10005, 50001], [None, 2, 3, 1, None]), [None, None, None]) # value before is not the same self.assertEqual(test([10001, 10002, 10003, 50000], [10002, 10005, 49999], [None, 2, 3, None]), [None, None, None]) # nonnull color values are not adjacent self.assertEqual(test([10001, 10002, 10003, 10004, 50000], [10001, 10006, 49999], [None, 2, None, 4, None]), [None, None, None]) # sequence before don't add up the same self.assertEqual(test([10005, 10001, 10002, 10003, 50000], [10004, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, None, None]) # sequence before does add up the same self.assertEqual(test([10005, 10001, 10002, 10003, 50001], [10005, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, 5, None]) # split to many self.assertEqual(test([10005, 10001, 10005, 50001], [10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [None, None, 5, None]), [None, None, 1, 1, 1, 1, 1, None]) # combine many self.assertEqual(test([10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [10005, 10001, 10005, 50001], [None, None, 1, 1, 1, 1, 1, None]), [None, None, 5, None]) # split and combine self.assertEqual(test([10001, 10002, 10003, 10004, 10005, 10006, 50000], [10001, 10005, 10009, 10006, 50000], [None, 2, 3, 4, 5, 6, None]), [None, 5, 9, 6, None]) # combine and split self.assertEqual(test([10005, 10009, 10006, 50000], [10002, 10003, 10004, 10005, 10006, 50000], [5, 9, 6, None]), [2, 3, 4, 5, 6, None])
def test_compose_tx_spec(self): cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1) cv2 = SimpleColorValue(colordef=self.obc, value=1) target1 = ColorTarget('addr1', cv1) target2 = ColorTarget('addr2', cv2) targets = [target1, target2] txspec = MockOpTxSpec(targets) self.assertTrue( isinstance(self.obc.compose_tx_spec(txspec), ComposedTxSpec)) non = POBColorDefinition(2, {'txhash': 'something', 'outindex': 0}) cv3 = SimpleColorValue(colordef=non, value=1) target3 = ColorTarget('addr3', cv3) targets = [cv3, cv2] txspec = MockOpTxSpec(targets) self.assertRaises(InvalidColorError, self.obc.compose_tx_spec, txspec)
def test_compose_genesis_tx_spec(self): cv = SimpleColorValue(colordef=self.pobc, value=5) txspec = MockOpTxSpec([]) self.assertRaises(InvalidTargetError, POBColorDefinition.compose_genesis_tx_spec, txspec) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertRaises(InvalidColorError, POBColorDefinition.compose_genesis_tx_spec, txspec) cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=5) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertTrue(isinstance( POBColorDefinition.compose_genesis_tx_spec(txspec), ComposedTxSpec))
def setUp(self): self.colordef1 = POBColorDefinition(1, { 'txhash': 'genesis', 'outindex': 0 }) self.colordef2 = OBColorDefinition(2, { 'txhash': 'genesis', 'outindex': 0 }) self.cv1 = SimpleColorValue(colordef=self.colordef1, value=1, label='test') self.cv2 = SimpleColorValue(colordef=self.colordef1, value=2, label='test2') self.cv3 = SimpleColorValue(colordef=self.colordef2, value=1)
def test_compose_genesis_tx_spec(self): cv = SimpleColorValue(colordef=self.pobc, value=5) txspec = MockOpTxSpec([]) self.assertRaises(InvalidTargetError, POBColorDefinition.compose_genesis_tx_spec, txspec) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertRaises(InvalidColorError, POBColorDefinition.compose_genesis_tx_spec, txspec) cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=5) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertTrue( isinstance(POBColorDefinition.compose_genesis_tx_spec(txspec), ComposedTxSpec))
def setUp(self): self.colordef1 = POBColorDefinition(1, { 'txhash': 'genesis', 'outindex': 0 }) self.colordef2 = OBColorDefinition(2, { 'txhash': 'genesis', 'outindex': 0 }) self.cv1 = SimpleColorValue(colordef=self.colordef1, value=1, label='test') self.cv2 = SimpleColorValue(colordef=self.colordef1, value=2, label='test2') self.cv3 = SimpleColorValue(colordef=self.colordef2, value=1) self.ct1 = ColorTarget('address1', self.cv1) self.ct2 = ColorTarget('address2', self.cv2) self.ct3 = ColorTarget('address3', self.cv3) self.txspec = MockOpTxSpec([self.ct1, self.ct2])
def test_from_color_desc(self): cd = POBColorDefinition.from_color_desc(1, "pobc:doesnmatter:0:0") self.assertTrue(isinstance(cd, POBColorDefinition)) self.assertRaises(InvalidColorError, POBColorDefinition.from_color_desc, 1, "blah:doesnmatter:0:0")
def setUp(self): self.pobc = POBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0}) self.tester = ColorDefinitionTester(self.pobc)
class TestPOBC(unittest.TestCase): def setUp(self): self.pobc = POBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0}) self.tester = ColorDefinitionTester(self.pobc) def test_run_kernel(self): # test the POBC color kernel test = self.tester.test # genesis self.assertEqual(test([10001], [10001], [1], "genesis"), [1]) self.assertEqual(test([40001], [10001, 30000], [1], "genesis"), [1, None]) self.assertEqual(test([10000, 1], [10001], [1], "genesis"), [1]) self.pobc.genesis['outindex'] = 1 self.assertEqual(test([40001], [30000, 10001], [1], "genesis"), [None, 1]) self.pobc.genesis['outindex'] = 0 # simple transfer self.assertEqual(test([10001], [10001], [1]), [1]) # canonical split self.assertEqual(test([10002, 10003], [10005], [2, 3]), [5]) # canonical combine self.assertEqual(test([10005], [10002, 10003], [5]), [2, 3]) # null values before and after self.assertEqual(test([10001, 10002, 10003, 50000], [10001, 10005, 50000], [None, 2, 3, None]), [None, 5, None]) # ignore below-padding values self.assertEqual(test([10001, 10002, 10003, 50000, 100, 20000], [10001, 10005, 100, 70000, 100], [None, 2, 3, None]), [None, 5]) # color values don't add up the same self.assertEqual(test([10001, 10002, 10003, 10001, 50000], [10001, 10005, 50001], [None, 2, 3, 1, None]), [None, None, None]) # value before is not the same self.assertEqual(test([10001, 10002, 10003, 50000], [10002, 10005, 49999], [None, 2, 3, None]), [None, None, None]) # nonnull color values are not adjacent self.assertEqual(test([10001, 10002, 10003, 10004, 50000], [10001, 10006, 49999], [None, 2, None, 4, None]), [None, None, None]) # sequence before don't add up the same self.assertEqual(test([10005, 10001, 10002, 10003, 50000], [10004, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, None, None]) # sequence before does add up the same self.assertEqual(test([10005, 10001, 10002, 10003, 50001], [10005, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, 5, None]) # split to many self.assertEqual(test([10005, 10001, 10005, 50001], [10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [None, None, 5, None]), [None, None, 1, 1, 1, 1, 1, None]) # combine many self.assertEqual(test([10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [10005, 10001, 10005, 50001], [None, None, 1, 1, 1, 1, 1, None]), [None, None, 5, None]) # split and combine self.assertEqual(test([10001, 10002, 10003, 10004, 10005, 10006, 50000], [10001, 10005, 10009, 10006, 50000], [None, 2, 3, 4, 5, 6, None]), [None, 5, 9, 6, None]) # combine and split self.assertEqual(test([10005, 10009, 10006, 50000], [10002, 10003, 10004, 10005, 10006, 50000], [5, 9, 6, None]), [2, 3, 4, 5, 6, None]) def test_compose_genesis_tx_spec(self): cv = SimpleColorValue(colordef=self.pobc, value=5) txspec = MockOpTxSpec([]) self.assertRaises(InvalidTargetError, POBColorDefinition.compose_genesis_tx_spec, txspec) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertRaises(InvalidColorError, POBColorDefinition.compose_genesis_tx_spec, txspec) cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=5) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertTrue(isinstance( POBColorDefinition.compose_genesis_tx_spec(txspec), ComposedTxSpec)) def test_compose_tx_spec(self): cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=10000) cv2 = SimpleColorValue(colordef=self.pobc, value=10000) targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertTrue(isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec)) cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=20000) cv2 = SimpleColorValue(colordef=self.pobc, value=20000) targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertTrue(isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec)) non = OBColorDefinition(2, {'txhash': 'something', 'outindex': 0}) cv3 = SimpleColorValue(colordef=non, value=2) targets = [ColorTarget('addr1', cv3), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertRaises(InvalidColorError, self.pobc.compose_tx_spec, txspec) def test_from_color_desc(self): cd = POBColorDefinition.from_color_desc(1, "pobc:doesnmatter:0:0") self.assertTrue(isinstance(cd, POBColorDefinition)) self.assertRaises(InvalidColorError, POBColorDefinition.from_color_desc, 1, "blah:doesnmatter:0:0")
class TestPOBC(unittest.TestCase): def setUp(self): self.pobc = POBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0}) self.tester = ColorDefinitionTester(self.pobc) def test_run_kernel(self): # test the POBC color kernel test = self.tester.test # genesis self.assertEqual(test([10001], [10001], [1], "genesis"), [1]) self.assertEqual(test([40001], [10001, 30000], [1], "genesis"), [1, None]) self.assertEqual(test([10000, 1], [10001], [1], "genesis"), [1]) self.pobc.genesis['outindex'] = 1 self.assertEqual(test([40001], [30000, 10001], [1], "genesis"), [None, 1]) self.pobc.genesis['outindex'] = 0 # simple transfer self.assertEqual(test([10001], [10001], [1]), [1]) # canonical split self.assertEqual(test([10002, 10003], [10005], [2, 3]), [5]) # canonical combine self.assertEqual(test([10005], [10002, 10003], [5]), [2, 3]) # null values before and after self.assertEqual( test([10001, 10002, 10003, 50000], [10001, 10005, 50000], [None, 2, 3, None]), [None, 5, None]) # ignore below-padding values self.assertEqual( test([10001, 10002, 10003, 50000, 100, 20000], [10001, 10005, 100, 70000, 100], [None, 2, 3, None]), [None, 5]) # color values don't add up the same self.assertEqual( test([10001, 10002, 10003, 10001, 50000], [10001, 10005, 50001], [None, 2, 3, 1, None]), [None, None, None]) # value before is not the same self.assertEqual( test([10001, 10002, 10003, 50000], [10002, 10005, 49999], [None, 2, 3, None]), [None, None, None]) # nonnull color values are not adjacent self.assertEqual( test([10001, 10002, 10003, 10004, 50000], [10001, 10006, 49999], [None, 2, None, 4, None]), [None, None, None]) # sequence before don't add up the same self.assertEqual( test([10005, 10001, 10002, 10003, 50000], [10004, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, None, None]) # sequence before does add up the same self.assertEqual( test([10005, 10001, 10002, 10003, 50001], [10005, 10001, 10005, 40000], [None, None, 2, 3, None]), [None, None, 5, None]) # split to many self.assertEqual( test([10005, 10001, 10005, 50001], [10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [None, None, 5, None]), [None, None, 1, 1, 1, 1, 1, None]) # combine many self.assertEqual( test([10005, 10001, 10001, 10001, 10001, 10001, 10001, 40000], [10005, 10001, 10005, 50001], [None, None, 1, 1, 1, 1, 1, None]), [None, None, 5, None]) # split and combine self.assertEqual( test([10001, 10002, 10003, 10004, 10005, 10006, 50000], [10001, 10005, 10009, 10006, 50000], [None, 2, 3, 4, 5, 6, None]), [None, 5, 9, 6, None]) # combine and split self.assertEqual( test([10005, 10009, 10006, 50000], [10002, 10003, 10004, 10005, 10006, 50000], [5, 9, 6, None]), [2, 3, 4, 5, 6, None]) def test_compose_genesis_tx_spec(self): cv = SimpleColorValue(colordef=self.pobc, value=5) txspec = MockOpTxSpec([]) self.assertRaises(InvalidTargetError, POBColorDefinition.compose_genesis_tx_spec, txspec) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertRaises(InvalidColorError, POBColorDefinition.compose_genesis_tx_spec, txspec) cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=5) target = ColorTarget('addr', cv) txspec = MockOpTxSpec([target]) self.assertTrue( isinstance(POBColorDefinition.compose_genesis_tx_spec(txspec), ComposedTxSpec)) def test_compose_tx_spec(self): cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=10000) cv2 = SimpleColorValue(colordef=self.pobc, value=10000) targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertTrue( isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec)) cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=20000) cv2 = SimpleColorValue(colordef=self.pobc, value=20000) targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertTrue( isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec)) non = OBColorDefinition(2, {'txhash': 'something', 'outindex': 0}) cv3 = SimpleColorValue(colordef=non, value=2) targets = [ColorTarget('addr1', cv3), ColorTarget('addr1', cv2)] txspec = MockOpTxSpec(targets) self.assertRaises(InvalidColorError, self.pobc.compose_tx_spec, txspec) def test_from_color_desc(self): cd = POBColorDefinition.from_color_desc(1, "pobc:doesnmatter:0:0") self.assertTrue(isinstance(cd, POBColorDefinition)) self.assertRaises(InvalidColorError, POBColorDefinition.from_color_desc, 1, "blah:doesnmatter:0:0")