crypto-unit 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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