| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | package core | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2015-06-08 12:12:13 +02:00
										 |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	"math/big" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-18 13:38:47 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/common" | 
					
						
							| 
									
										
										
										
											2015-05-22 22:44:51 +02:00
										 |  |  | 	"github.com/ethereum/go-ethereum/core/state" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/core/types" | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/ethdb" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/event" | 
					
						
							| 
									
										
										
										
											2015-03-06 20:07:35 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/pow/ezp" | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func proc() (*BlockProcessor, *ChainManager) { | 
					
						
							|  |  |  | 	db, _ := ethdb.NewMemDatabase() | 
					
						
							|  |  |  | 	var mux event.TypeMux | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-08 12:12:13 +02:00
										 |  |  | 	genesis := GenesisBlock(0, db) | 
					
						
							|  |  |  | 	chainMan, err := NewChainManager(genesis, db, db, thePow(), &mux) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		fmt.Println(err) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-06-03 15:52:25 +02:00
										 |  |  | 	return NewBlockProcessor(db, db, ezp.New(), chainMan, &mux), chainMan | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestNumber(t *testing.T) { | 
					
						
							|  |  |  | 	bp, chain := proc() | 
					
						
							| 
									
										
										
										
											2015-03-18 13:38:47 +01:00
										 |  |  | 	block1 := chain.NewBlock(common.Address{}) | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	block1.Header().Number = big.NewInt(3) | 
					
						
							| 
									
										
										
										
											2015-04-04 16:35:23 +02:00
										 |  |  | 	block1.Header().Time-- | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-18 17:46:47 +02:00
										 |  |  | 	err := bp.ValidateHeader(block1.Header(), chain.Genesis().Header(), false) | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	if err != BlockNumberErr { | 
					
						
							| 
									
										
										
										
											2015-04-04 16:35:23 +02:00
										 |  |  | 		t.Errorf("expected block number error %v", err) | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-18 13:38:47 +01:00
										 |  |  | 	block1 = chain.NewBlock(common.Address{}) | 
					
						
							| 
									
										
										
										
											2015-05-18 17:46:47 +02:00
										 |  |  | 	err = bp.ValidateHeader(block1.Header(), chain.Genesis().Header(), false) | 
					
						
							| 
									
										
										
										
											2015-02-18 13:14:21 +01:00
										 |  |  | 	if err == BlockNumberErr { | 
					
						
							|  |  |  | 		t.Errorf("didn't expect block number error") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-05-22 22:44:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestPutReceipt(t *testing.T) { | 
					
						
							|  |  |  | 	db, _ := ethdb.NewMemDatabase() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var addr common.Address | 
					
						
							|  |  |  | 	addr[0] = 1 | 
					
						
							|  |  |  | 	var hash common.Hash | 
					
						
							|  |  |  | 	hash[0] = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	receipt := new(types.Receipt) | 
					
						
							|  |  |  | 	receipt.SetLogs(state.Logs{&state.Log{ | 
					
						
							|  |  |  | 		Address:   addr, | 
					
						
							|  |  |  | 		Topics:    []common.Hash{hash}, | 
					
						
							|  |  |  | 		Data:      []byte("hi"), | 
					
						
							|  |  |  | 		Number:    42, | 
					
						
							|  |  |  | 		TxHash:    hash, | 
					
						
							|  |  |  | 		TxIndex:   0, | 
					
						
							|  |  |  | 		BlockHash: hash, | 
					
						
							|  |  |  | 		Index:     0, | 
					
						
							|  |  |  | 	}}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	putReceipts(db, hash, types.Receipts{receipt}) | 
					
						
							|  |  |  | 	receipts, err := getBlockReceipts(db, hash) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		t.Error("got err:", err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if len(receipts) != 1 { | 
					
						
							|  |  |  | 		t.Error("expected to get 1 receipt, got", len(receipts)) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |