crypto-unit 0.3.0 → 0.3.2

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: 2de75699f62f03becfbc70ccee8a49f134a5c0a1
4
- data.tar.gz: 0450a1a6a2d3ffad8feec23b219122e74ed1eee1
3
+ metadata.gz: 44be33d0f9a4b7bb535419719c790b0780327cde
4
+ data.tar.gz: bcb256c4393e58355f19f383567c8fdfdff66df5
5
5
  SHA512:
6
- metadata.gz: bfcd8106763223c3135301730eeb04d0eafa28bee87c91fd18eba21ff96df3d2054c2d5d197c63a6c31b6a144b62121bfec5807e41f58668cedf2c41a2c176dd
7
- data.tar.gz: a88588c40850735ba067c2c26198e02323b93bc0f9e0c93bc2589ea15e80ad5ae01fcb09a11e35e53a5d56320afec4f43af981eb886095c1b6dd51fcbe9d94f2
6
+ metadata.gz: 9b7b58b89f860f5ba0ed54935151eddb3ee086909ea4acec2c29d1681cb761dd8a08237d71a3ceb8eb27852767ae2d18f8e391bff2b1c173caf41ebd42ae3f2e
7
+ data.tar.gz: 43864b3a960cc88d8295f820b81da34df0bdd0ccb73992046f42509c4d79862d9d234f5c8a2d7169ad021ae2ffd6b069b372cf164fe4b98ba4a4295013d8f610
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.2
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: crypto-unit 0.3.0 ruby lib
5
+ # stub: crypto-unit 0.3.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "crypto-unit".freeze
9
- s.version = "0.3.0"
9
+ s.version = "0.3.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Roman Snitko".freeze]
14
- s.date = "2017-07-18"
14
+ s.date = "2017-08-31"
15
15
  s.description = "Converts various BTC and LTC denominations".freeze
16
16
  s.email = "roman.snitko@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  ]
37
37
  s.homepage = "http://github.com/mgpnd/crypto-unit".freeze
38
38
  s.licenses = ["MIT".freeze]
39
- s.rubygems_version = "2.6.12".freeze
39
+ s.rubygems_version = "2.6.13".freeze
40
40
  s.summary = "Converts various BTC and LTC denominations".freeze
41
41
 
42
42
  if s.respond_to? :specification_version then
@@ -26,23 +26,23 @@ class CryptoUnit
26
26
  @value = convert_to_primary(n) if n
27
27
  end
28
28
 
29
- def to_standart(as: :number)
30
- to_denomination(UNIT_DENOMINATIONS[:standart], as: as)
29
+ def to_standart(as: :number, format_zero: false)
30
+ to_denomination(UNIT_DENOMINATIONS[:standart], as: as, format_zero: format_zero)
31
31
  end
32
32
 
33
- def to_milli(as: :number)
34
- to_denomination(UNIT_DENOMINATIONS[:milli], as: as)
33
+ def to_milli(as: :number, format_zero: false)
34
+ to_denomination(UNIT_DENOMINATIONS[:milli], as: as, format_zero: format_zero)
35
35
  end
36
36
 
37
- def to_unit(as: :number)
38
- to_denomination(UNIT_DENOMINATIONS[@to_unit], as: as)
37
+ def to_unit(as: :number, format_zero: false)
38
+ to_denomination(UNIT_DENOMINATIONS[@to_unit], as: as, format_zero: format_zero)
39
39
  end
40
40
 
41
41
  def to_i
42
42
  return 0 if @value.nil?
43
43
  @value
44
44
  end
45
- alias :primary_value :to_i
45
+ alias :primary_value :to_i
46
46
 
47
47
  def to_s
48
48
  to_unit.to_s
@@ -112,8 +112,8 @@ class CryptoUnit
112
112
  end
113
113
 
114
114
  protected
115
-
116
- def to_denomination(digits_after_delimiter, as: :number)
115
+
116
+ def to_denomination(digits_after_delimiter, as: :number, format_zero: false)
117
117
  sign = @value < 0 ? -1 : 1
118
118
  val = @value.abs
119
119
  return val if digits_after_delimiter <= 0
@@ -124,10 +124,10 @@ class CryptoUnit
124
124
  result.reverse!
125
125
  result = result.sub(/\A0*/, '').sub(/0*\Z/, '') # remove zeros on both sides
126
126
  if as == :number
127
- result.to_f*sign
127
+ result.to_f*sign
128
128
  else
129
129
  if result == '.'
130
- result = '0.0'
130
+ result = format_zero ? '0' : '0.0'
131
131
  elsif result =~ /\A\./
132
132
  result = "0#{result}"
133
133
  end
@@ -147,7 +147,7 @@ class CryptoUnit
147
147
 
148
148
  if decimal_part_length > UNIT_DENOMINATIONS[@from_unit]
149
149
  raise TooManyDigitsAfterDecimalPoint,
150
- "Too many digits (#{decimal_part_length}) after decimal point used for #{@from_unit} value, while #{UNIT_DENOMINATIONS[@from_unit]} allowed"
150
+ "Too many digits (#{decimal_part_length}) after decimal point used for #{@from_unit} value, while #{UNIT_DENOMINATIONS[@from_unit]} allowed"
151
151
  end
152
152
 
153
153
  n = ("%.#{UNIT_DENOMINATIONS[@from_unit]}f" % n) # otherwise we might see a scientific notation
@@ -161,4 +161,4 @@ class CryptoUnit
161
161
 
162
162
  n.join.to_i
163
163
  end
164
- end
164
+ end
@@ -5,92 +5,92 @@ require_relative '../lib/litoshi'
5
5
  describe CryptoUnit do
6
6
 
7
7
  it "creates a Bignum representing value in primary units" do
8
- expect(Satoshi.new(1.00).to_i).to eq(100000000)
8
+ expect(SatoshiUnit.new(1.00).to_i).to eq(100000000)
9
9
  end
10
10
 
11
11
  it "takes care of the sign before the value" do
12
- expect(Satoshi.new(-1.00).to_i).to eq(-100000000)
12
+ expect(SatoshiUnit.new(-1.00).to_i).to eq(-100000000)
13
13
  end
14
14
 
15
15
  it "converts primary unit back to some more common denomination" do
16
- expect(Satoshi.new(1.00).to_standart).to eq(1)
17
- expect(Satoshi.new(1.08763).to_standart).to eq(1.08763)
18
- expect(Satoshi.new(1.08763).to_milli).to eq(1087.63)
19
- expect(Satoshi.new(-1.08763).to_milli).to eq(-1087.63)
20
- expect(Satoshi.new(0.00000001).to_i).to eq(1)
21
- expect(Satoshi.new(0.00000001).to_milli).to eq(0.00001)
16
+ expect(SatoshiUnit.new(1.00).to_standart).to eq(1)
17
+ expect(SatoshiUnit.new(1.08763).to_standart).to eq(1.08763)
18
+ expect(SatoshiUnit.new(1.08763).to_milli).to eq(1087.63)
19
+ expect(SatoshiUnit.new(-1.08763).to_milli).to eq(-1087.63)
20
+ expect(SatoshiUnit.new(0.00000001).to_i).to eq(1)
21
+ expect(SatoshiUnit.new(0.00000001).to_milli).to eq(0.00001)
22
22
  end
23
-
23
+
24
24
  it "converts from various source denominations" do
25
- expect(Satoshi.new(1, unit: 'milli').to_standart).to eq(0.001)
26
- expect(Satoshi.new(1, unit: 'milli').to_unit).to eq(1)
27
- expect(Satoshi.new(10000000, unit: 'milli').to_unit).to eq(10000000)
28
- satoshi = Satoshi.new(10000000, unit: 'milli')
25
+ expect(SatoshiUnit.new(1, unit: 'milli').to_standart).to eq(0.001)
26
+ expect(SatoshiUnit.new(1, unit: 'milli').to_unit).to eq(1)
27
+ expect(SatoshiUnit.new(10000000, unit: 'milli').to_unit).to eq(10000000)
28
+ satoshi = SatoshiUnit.new(10000000, unit: 'milli')
29
29
  satoshi.primary_value = 1
30
30
  expect(satoshi.to_unit).to eq(0.00001)
31
- expect(Satoshi.new(100, unit: 'milli').to_i).to eq(10000000)
31
+ expect(SatoshiUnit.new(100, unit: 'milli').to_i).to eq(10000000)
32
32
  end
33
33
 
34
34
  it "treats nil in value as 0" do
35
- expect(Satoshi.new < 1).to be_truthy
36
- expect(Satoshi.new > 1).to be_falsy
37
- expect(Satoshi.new == 0).to be_truthy
35
+ expect(SatoshiUnit.new < 1).to be_truthy
36
+ expect(SatoshiUnit.new > 1).to be_falsy
37
+ expect(SatoshiUnit.new == 0).to be_truthy
38
38
  end
39
39
 
40
40
  it "converts negative values correctly" do
41
- expect(Satoshi.new(-1.00, unit: :milli).to_standart).to eq(-0.001)
41
+ expect(SatoshiUnit.new(-1.00, unit: :milli).to_standart).to eq(-0.001)
42
42
  end
43
43
 
44
44
  it "converts zero values correctly" do
45
- expect(Satoshi.new(0, unit: :milli).to_unit).to eq(0)
45
+ expect(SatoshiUnit.new(0, unit: :milli).to_unit).to eq(0)
46
46
  end
47
47
 
48
48
  it "converts nil values correctly" do
49
- s = Satoshi.new(nil, unit: :milli)
49
+ s = SatoshiUnit.new(nil, unit: :milli)
50
50
  expect(s.value).to eq(0)
51
51
  s.value = nil
52
52
  expect(s.to_unit).to eq(0)
53
53
  end
54
54
 
55
55
  it "displays one primary unit in human form, not math form" do
56
- one_satoshi = Satoshi.new(1, from_unit: :primary, to_unit: :standart)
56
+ one_satoshi = SatoshiUnit.new(1, from_unit: :primary, to_unit: :standart)
57
57
  expect(one_satoshi.to_unit(as: :string)).not_to eq('1.0e-08')
58
58
  expect(one_satoshi.to_unit(as: :string)).to eq('0.00000001')
59
59
  end
60
60
 
61
61
  it "displays zero units in human form, not math form" do
62
- zero_satoshi = Satoshi.new(0, from_unit: :primary, to_unit: :standart)
62
+ zero_satoshi = SatoshiUnit.new(0, from_unit: :primary, to_unit: :standart)
63
63
  expect(zero_satoshi.to_unit(as: :string)).to eq('0.0')
64
64
  end
65
65
 
66
66
  it "raises exception if decimal part contains more digits than allowed by from_value" do
67
- expect( -> { Satoshi.new(0.001000888888888888888, from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
68
- expect( -> { Satoshi.new("0.001000999999999999999", from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
69
- expect( -> { Satoshi.new(0.001000999, from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
70
- expect( -> { Satoshi.new(0.00100099, from_unit: :standart).to_unit }).not_to raise_exception
71
- expect( -> { Satoshi.new(0.123456789, from_unit: :standart) }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
72
- expect( -> { Satoshi.new(0.12345678, from_unit: :standart).to_unit }).not_to raise_exception
73
- expect( -> { Satoshi.new(nil, from_unit: :standart).to_unit }).not_to raise_exception
67
+ expect( -> { SatoshiUnit.new(0.001000888888888888888, from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
68
+ expect( -> { SatoshiUnit.new("0.001000999999999999999", from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
69
+ expect( -> { SatoshiUnit.new(0.001000999, from_unit: :standart).to_unit }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
70
+ expect( -> { SatoshiUnit.new(0.00100099, from_unit: :standart).to_unit }).not_to raise_exception
71
+ expect( -> { SatoshiUnit.new(0.123456789, from_unit: :standart) }).to raise_exception(CryptoUnit::TooManyDigitsAfterDecimalPoint)
72
+ expect( -> { SatoshiUnit.new(0.12345678, from_unit: :standart).to_unit }).not_to raise_exception
73
+ expect( -> { SatoshiUnit.new(nil, from_unit: :standart).to_unit }).not_to raise_exception
74
74
  end
75
75
 
76
76
  it "Satoshi dissallows to create values more than 21mil BTC" do
77
- expect( -> { Satoshi.new(21_000_001) }).to raise_exception(CryptoUnit::TooLarge)
78
- expect( -> { Satoshi.new(21_000_000) }).not_to raise_exception
77
+ expect( -> { SatoshiUnit.new(21_000_001) }).to raise_exception(CryptoUnit::TooLarge)
78
+ expect( -> { SatoshiUnit.new(21_000_000) }).not_to raise_exception
79
79
  end
80
80
 
81
81
  it "Litoshi disallows to create values more than 84mil LTC" do
82
- expect( -> { Litoshi.new(84_000_001) }).to raise_exception(CryptoUnit::TooLarge)
83
- expect( -> { Litoshi.new(84_000_000) }).not_to raise_exception
82
+ expect( -> { LitoshiUnit.new(84_000_001) }).to raise_exception(CryptoUnit::TooLarge)
83
+ expect( -> { LitoshiUnit.new(84_000_000) }).not_to raise_exception
84
84
  end
85
85
 
86
86
  it "returns CryptoUnit for +,- and * methods if both operands are CryptoUnit" do
87
- s1 = Satoshi.new(0.001, from_unit: :standart)
88
- s2 = Satoshi.new(0.002, from_unit: :standart)
89
- expect(s1+s2).to be_kind_of(Satoshi)
87
+ s1 = SatoshiUnit.new(0.001, from_unit: :standart)
88
+ s2 = SatoshiUnit.new(0.002, from_unit: :standart)
89
+ expect(s1+s2).to be_kind_of(SatoshiUnit)
90
90
  expect((s1+s2).to_unit).to eq(0.003)
91
- expect(s2-s1).to be_kind_of(Satoshi)
91
+ expect(s2-s1).to be_kind_of(SatoshiUnit)
92
92
  expect((s2-s1).to_unit).to eq(0.001)
93
- expect(s2*s1).to be_kind_of(Satoshi)
93
+ expect(s2*s1).to be_kind_of(SatoshiUnit)
94
94
  expect((s2*s1).to_unit).to eq(200)
95
95
  end
96
96
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crypto-unit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Snitko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-18 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.6.12
97
+ rubygems_version: 2.6.13
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: Converts various BTC and LTC denominations