Exemple #1
0
    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])
Exemple #2
0
 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)
Exemple #3
0
    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))
Exemple #4
0
 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)
Exemple #5
0
    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))
Exemple #6
0
 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])
Exemple #7
0
 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")
Exemple #8
0
 def setUp(self):
     self.pobc = POBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
     self.tester = ColorDefinitionTester(self.pobc)
Exemple #9
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")
Exemple #10
0
 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")
Exemple #11
0
 def setUp(self):
     self.pobc = POBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
     self.tester = ColorDefinitionTester(self.pobc)
Exemple #12
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")