-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBlockTest.swift
65 lines (42 loc) · 1.63 KB
/
BlockTest.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//
// BlockTest.swift
// SwiftTests
//
// Created by Wayne Bishop on 2/4/18.
// Copyright © 2018 Arbutus Software Inc. All rights reserved.
//
import XCTest
@testable import SwiftStructures
class BlockTest: XCTestCase {
var bitcoin = Blockchain()
var PeerA = Peer(with: "John Hobbs")
var PeerB = Peer(with: "Frank Smith")
var PeerC = Peer(with: "Albert Einstien")
var PeerD = Peer(with: "Steve Jobs")
override func setUp() {
super.setUp()
//add the vertices
bitcoin.addVertex(element: PeerA)
bitcoin.addVertex(element: PeerB)
bitcoin.addVertex(element: PeerC)
bitcoin.addVertex(element: PeerD)
//add the edges
bitcoin.addEdge(source: PeerA, neighbor: PeerB, weight: 1)
bitcoin.addEdge(source: PeerA, neighbor: PeerC, weight: 1)
bitcoin.addEdge(source: PeerB, neighbor: PeerD, weight: 1)
//simulate intended transactions
PeerA.intent(with: PeerB, for: 12.95)
PeerB.intent(with: PeerC, for: 5.00)
PeerC.intent(with: PeerD, for: 10.00)
PeerB.intent(with: PeerD, for: 4.95)
}
//miners monitor the peer network for intended transactions
func testPollForExchanges() {
let miner = Blockchain.Miner()
miner.poll(startingv: PeerA, network: bitcoin)
bitcoin.broadcast(to: &PeerA)
bitcoin.broadcast(to: &PeerB)
bitcoin.broadcast(to: &PeerC)
bitcoin.broadcast(to: &PeerD)
}
}