예제 #1
0
class BlockChainTest(unittest.TestCase):
    def setUp(self):
        self.tx = Transaction("Satheesh", "Chaitra", 10)
        self.newtx = Transaction("Chaitra", "Nala", 10)
        self.block = Block()
        self.block.add_transaction(self.tx)
        self.block.finalize()
        self.blockchain = []
        self.blockchain.append(self.block)

    def test_new_blockchain(self):
        newblock = Block(blockchain=self.blockchain)
        newtx = Transaction("Jeeva", "Satheesh", 2)
        newblock.add_transaction(newtx)
        newblock.finalize()
        self.blockchain.append(newblock)
        self.assertTrue(validatechain(self.blockchain))

    def test_invalid_blockchain(self):
        newblock = Block(blockchain=self.blockchain)
        newtx = Transaction("Jeeva", "Satheesh", 2)
        newblock.add_transaction(newtx)
        newblock.finalize()
        self.blockchain.append(newblock)
        thirdblock = Block(blockchain=self.blockchain)
        anothertx = Transaction("Jeeva", "Vinoth", 2)
        thirdblock.add_transaction(anothertx)
        thirdblock.finalize()
        #self.assertTrue(validatechain(self.blockchain))
        newblock.add_transaction(anothertx)
        self.blockchain[1] = newblock
        self.assertFalse(validatechain(self.blockchain))
예제 #2
0
 def setUp(self):
     self.tx = Transaction("Satheesh", "Chaitra", 10)
     self.newtx = Transaction("Chaitra", "Nala", 10)
     self.block = Block()
     self.block.add_transaction(self.tx)
     self.block.finalize()
     self.blockchain = []
     self.blockchain.append(self.block)
예제 #3
0
 def test_new_blockchain(self):
     newblock = Block(blockchain=self.blockchain)
     newtx = Transaction("Jeeva", "Satheesh", 2)
     newblock.add_transaction(newtx)
     newblock.finalize()
     self.blockchain.append(newblock)
     self.assertTrue(validatechain(self.blockchain))
예제 #4
0
 def test_invalid_blockchain(self):
     newblock = Block(blockchain=self.blockchain)
     newtx = Transaction("Jeeva", "Satheesh", 2)
     newblock.add_transaction(newtx)
     newblock.finalize()
     self.blockchain.append(newblock)
     thirdblock = Block(blockchain=self.blockchain)
     anothertx = Transaction("Jeeva", "Vinoth", 2)
     thirdblock.add_transaction(anothertx)
     thirdblock.finalize()
     #self.assertTrue(validatechain(self.blockchain))
     newblock.add_transaction(anothertx)
     self.blockchain[1] = newblock
     self.assertFalse(validatechain(self.blockchain))
예제 #5
0
 def setUp(self):
     self.tx = Transaction("Satheesh", "Chaitra", 10)
     self.newtx = Transaction("Chaitra", "Nala", 10)
     self.block = Block()
예제 #6
0
class BlockTest(unittest.TestCase):
    def setUp(self):
        self.tx = Transaction("Satheesh", "Chaitra", 10)
        self.newtx = Transaction("Chaitra", "Nala", 10)
        self.block = Block()

    def test_add_block(self):
        self.assertEqual(self.block.transaction_count, 0)
        self.block.add_transaction(self.tx)
        self.assertEqual(self.block.transaction_count, 1)

    def test_not_final(self):
        self.assertFalse(self.block.validate())
        self.assertIsNone(self.block.hash)

    def test_finalize(self):
        self.assertFalse(self.block.validate())
        self.block.finalize()
        self.assertIsNotNone(self.block.hash)
        self.assertIsNone(self.block.prev_hash)
        self.assertEqual(self.block.height, 1)
        self.assertTrue(self.block.validate())

    def test_finalize_twice(self):
        self.block.finalize()
        with self.assertRaises(ValueError):
            self.block.finalize()

    def test_finalize_false(self):
        self.assertFalse(self.block.validate())
        self.assertIsNone(self.block.hash)
        self.block.finalize()
        old_hash = self.block.hash
        self.assertTrue(self.block.validate())
        self.block.add_transaction(self.newtx)
        with self.assertRaises(ValueError):
            self.block.finalize()
        new_hash = self.block.hash
        self.assertEqual(old_hash, new_hash)
        self.assertFalse(self.block.validate())