heisencoin 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d347b61ce04c1fa4dd297c1618999cbefa8087d
4
- data.tar.gz: b930a4a9eb4c8f67a45a417384770e0108fc708e
3
+ metadata.gz: a517b7b9c3fcf114963652c00454aa5c5dcf6f26
4
+ data.tar.gz: 616a927a7ea8aee4b1d035871d5b18843b922215
5
5
  SHA512:
6
- metadata.gz: 4bc127d3bfb2b3b1a7be6a5009d369e6a6abe04b088c9e6c844023ff18b9df2fe8fd9109940c0c9e9aa326cf429de0f38cf00bb1f8c71f2aae5f01cd9162b99a
7
- data.tar.gz: 5c0755679008fe176fc1a61285427471b72ce1b8ce632c135939c6e22d79d96b60dcd8c918d3ca9e16e30d5333dd1a2cfc2136050d2856e102ac222139738080
6
+ metadata.gz: 42d4787b3c35d1b7bc4e02391c812a504c7aefd768be7d566b8afbba875337116544705d3c03f3e841621192cae4172655202a98fdb6137fc88148d34474ccb6
7
+ data.tar.gz: 3abe1f3032fbfd2f1999ef0e7727e17c82275ce8fb404a16ac52dcdc7aed8a3da657c0c223b510530eb76fe9b633d2130a01472292531cca6db83817c19aaddb
data/lib/heisencoin.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'json'
2
+
1
3
  LIBDIR = File.dirname(__FILE__)
2
4
  Dir[LIBDIR+'/heisencoin/*.rb'].map{|f| File.basename(f,".rb")}
3
5
  .each{|rb| require "heisencoin/#{rb}"}
data/tests/arbitrage.rb CHANGED
@@ -98,10 +98,18 @@ class TestMeme < Minitest::Test
98
98
 
99
99
  it "should make all available trades" do
100
100
  trades = @arby.trade_all(@arby.profitable_asks, @arby.profitable_bids)
101
- trades.must_equal [ Trade.new(@ex2, @ex1, 0.5),
102
- Trade.new(@ex2, @ex1, 0.7),
103
- Trade.new(@ex2, @ex1, 0.20000000000000007),
104
- Trade.new(@ex2, @ex1, 0.9)]
101
+ trades.must_equal [ Trade.new({'from_offer' => Offer.from_array(@ex2, [13.4, 0.5]).to_simple,
102
+ 'to_offer' => Offer.from_array(@ex1, [14.2, 0.5]).to_simple,
103
+ 'quantity' => 0.5}),
104
+ Trade.new({'from_offer' => Offer.from_array(@ex2, [13.4, 0.5]).to_simple,
105
+ 'to_offer' => Offer.from_array(@ex1, [14.2, 0.5]).to_simple,
106
+ 'quantity' => 0.7}),
107
+ Trade.new({'from_offer' => Offer.from_array(@ex2, [13.4, 0.5]).to_simple,
108
+ 'to_offer' => Offer.from_array(@ex1, [14.2, 0.5]).to_simple,
109
+ 'quantity' => 0.20000000000000007}),
110
+ Trade.new({'from_offer' => Offer.from_array(@ex2, [13.4, 0.5]).to_simple,
111
+ 'to_offer' => Offer.from_array(@ex1, [14.2, 0.5]).to_simple,
112
+ 'quantity' => 0.9}) ]
105
113
  end
106
114
 
107
115
  it "should work" do
data/tests/offer.rb ADDED
@@ -0,0 +1,42 @@
1
+ require "minitest/autorun"
2
+ require "time"
3
+ require 'heisencoin'
4
+
5
+ class TestMeme < Minitest::Test
6
+
7
+ include Heisencoin
8
+
9
+ describe Heisencoin::Offer do
10
+ describe "when constructing an Offer" do
11
+
12
+ it "must start empty" do
13
+ offer = Offer.new
14
+ offer.quantity.must_equal nil
15
+ end
16
+
17
+ it "must load from a hash" do
18
+ params = {'exchange' => 'ex1',
19
+ 'price' => 10,
20
+ 'quantity' => 1.1}
21
+ offer = Offer.new(params)
22
+ offer.price.must_equal params['price']
23
+ offer.quantity.must_equal params['quantity']
24
+ end
25
+
26
+ end
27
+
28
+ describe "when deriving information" do
29
+ before do
30
+ @offer = Offer.new({'exchange' => 'ex1',
31
+ 'price' => 10,
32
+ 'quantity' => 1.1})
33
+ end
34
+
35
+ it "must calculate amount spent" do
36
+ @offer.cost(0.5).must_equal 5
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+ end
data/tests/trade.rb ADDED
@@ -0,0 +1,49 @@
1
+ require "minitest/autorun"
2
+ require "time"
3
+ require 'heisencoin'
4
+
5
+ class TestMeme < Minitest::Test
6
+
7
+ include Heisencoin
8
+
9
+ describe Heisencoin::Trade do
10
+ before do
11
+ @ex1 = Exchange.new({'name' =>'buylow'})
12
+ @offer1 = Offer.new({'exchange' => @ex1.to_simple,
13
+ 'price' => 10,
14
+ 'quantity' => 1})
15
+ @ex2 = Exchange.new({'name' =>'sellhigh'})
16
+ @offer2 = Offer.new({'exchange' => @ex2.to_simple,
17
+ 'price' => 11,
18
+ 'quantity' => 1})
19
+ end
20
+
21
+ describe "when constructing a Trade" do
22
+
23
+ it "must start empty" do
24
+ trade = Trade.new
25
+ end
26
+
27
+ end
28
+
29
+ describe "when deriving information" do
30
+ before do
31
+ @trade = Trade.new({'from_offer' => @offer1.to_simple,
32
+ 'to_offer' => @offer2.to_simple,
33
+ 'quantity' => 1.0})
34
+ end
35
+
36
+ it "must remember the offers" do
37
+ @trade.from_offer.must_equal @offer1
38
+ @trade.to_offer.must_equal @offer2
39
+ @trade.quantity.must_equal 1
40
+ end
41
+
42
+ it "must calculate amount spent" do
43
+ @trade.profit.must_equal 1
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heisencoin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Don Park
@@ -17,6 +17,8 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/heisencoin.rb
20
+ - tests/trade.rb
21
+ - tests/offer.rb
20
22
  - tests/arbitrage.rb
21
23
  homepage: https://github.com/cointhink/heisencoin
22
24
  licenses:
@@ -43,4 +45,6 @@ signing_key:
43
45
  specification_version: 4
44
46
  summary: cryptocoin finance methods
45
47
  test_files:
48
+ - tests/trade.rb
49
+ - tests/offer.rb
46
50
  - tests/arbitrage.rb