func TestUpdateECTransaction(t *testing.T) { state.SetFactoshisPerEC(1) add1, err := primitives.HexToHash("0000000000000000000000000000000000000000000000000000000000000001") if err != nil { t.Error(err) return } add1bs := primitives.StringToByteSlice32("0000000000000000000000000000000000000000000000000000000000000001") if state.GetECBalance(add1.Fixed()) != 0 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) return } var tx interfaces.IECBlockEntry tx = new(entryCreditBlock.ServerIndexNumber) err = state.UpdateECTransaction(tx) if err != nil { t.Error(err) return } if state.GetECBalance(add1.Fixed()) != 0 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) } tx = new(entryCreditBlock.MinuteNumber) err = state.UpdateECTransaction(tx) if err != nil { t.Error(err) return } if state.GetECBalance(add1.Fixed()) != 0 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) return } //Proper processing cc := new(entryCreditBlock.CommitChain) cc.ECPubKey = add1bs cc.Credits = 100 tx = cc err = state.UpdateECTransaction(tx) if err != nil { t.Error(err) return } if state.GetECBalance(add1.Fixed()) != -100 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) return } ib := new(entryCreditBlock.IncreaseBalance) ib.ECPubKey = add1bs ib.NumEC = 100 tx = ib err = state.UpdateECTransaction(tx) if err != nil { t.Error(err) return } if state.GetECBalance(add1.Fixed()) != 0 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) return } ce := new(entryCreditBlock.CommitEntry) ce.ECPubKey = add1bs ce.Credits = 100 tx = ce err = state.UpdateECTransaction(tx) if err != nil { t.Error(err) return } if state.GetECBalance(add1.Fixed()) != -100 { t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed())) return } }
func createECEntriesfromBlocks(fBlock interfaces.IFBlock, eBlocks []*entryBlock.EBlock, height int) []interfaces.IECBlockEntry { ecEntries := []interfaces.IECBlockEntry{} ecEntries = append(ecEntries, entryCreditBlock.NewServerIndexNumber2(uint8(height%10+1))) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(0)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(1)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(2)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(3)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(4)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(5)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(6)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(7)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(8)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(9)) trans := fBlock.GetTransactions() for _, t := range trans { ecOut := t.GetECOutputs() for i, ec := range ecOut { increase := new(entryCreditBlock.IncreaseBalance) increase.ECPubKey = primitives.Byte32ToByteSlice32(ec.GetAddress().Fixed()) increase.TXID = t.GetHash() increase.Index = uint64(i) increase.NumEC = ec.GetAmount() / fBlock.GetExchRate() ecEntries = append(ecEntries, increase) } } for _, eBlock := range eBlocks { if height == 0 { ecEntries = append(ecEntries, NewCommitChain(eBlock)) } else { ecEntries = append(ecEntries, NewCommitEntry(eBlock)) } } return ecEntries }