base_convert 1.0.0 → 2.0.0

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: e38bf64a72b3127b158c244a87a65176db358c21
4
- data.tar.gz: 1dc82bdddee617c3fe44e2c125a33b15641a346f
3
+ metadata.gz: 7cdec0c0e2e6f861cdf6a3b1d76c0c0236d96fa2
4
+ data.tar.gz: 92dac030b2644afc8713a7e2c528d22c704a1a0e
5
5
  SHA512:
6
- metadata.gz: 44c73f5bb7180fbecaaba4cc1936a339019ddbc367a76a30e815cbee9a0ce13d1235e2b86d5bca6e65fc3b3f3c1a1fba7a21e4dcad5eceb806a2b4e14e705e15
7
- data.tar.gz: 11c95ca5dd520a33e7c61da20c29c42e8adcb80da99030efcdfeb8d16cc7b63fa972dff21510a1105dbf4eafc911dfcfaf42eaf33569b88f4445c62caf9c2595
6
+ metadata.gz: 5abcd99a6357e1b8cafd89c6085b905bbbd9f29739f1d906e16fae5d6c9bad598a4c714cf12bea1d0c088df75022538c3bb9a281899f07f36c199991e155c301
7
+ data.tar.gz: e5fa9736608216d2e3ad1c88ecbec19fb9bd8592b8175a7a0ee2993a0573fe5a37832f62f30ab5a7609397e8293030b686757621edd1c83a1cb62bf8b90def2e
@@ -1,5 +1,7 @@
1
1
  = base_convert
2
2
 
3
+ {<img src="https://badge.fury.io/rb/base_convert.svg" alt="Gem Version" />}[http://badge.fury.io/rb/base_convert]
4
+
3
5
  github :: https://www.github.com/carlosjhr64/base_convert
4
6
  rubygems :: https://rubygems.org/gems/base_convert
5
7
 
@@ -17,36 +19,36 @@ See also Non-decimal_radices/Convert[http://rosettacode.org/wiki/Non-decimal_rad
17
19
  == SYNOPSIS:
18
20
 
19
21
  require 'base_convert'
20
- include BASE_CONVERT
21
- h2o = BaseConvert.new(16, 8)
22
- o2h = BaseConvert.new(8, 16)
23
- puts h2o.convert('FFFF') #=> "177777"
24
- puts o2h.convert('177777') #=> "FFFF"
22
+ include BaseConvert
23
+ h2o = FromTo.new(16, 8)
24
+ o2h = FromTo.new(8, 16)
25
+ a = h2o.convert('FFFF') #=> "177777"
26
+ b = o2h.convert('177777') #=> "FFFF"
25
27
 
26
28
  == BUT WAIT, THERE'S MORE:
27
29
 
28
30
  Using `irb` to demonstrate the features.
29
- The components are scoped under `BASE_CONVERT`:
31
+ The components are scoped under `BaseConvert`:
30
32
 
31
33
  # irb
32
34
  # Welcome to IRB...
33
35
  require 'base_convert' #=> true
34
- include BASE_CONVERT #=> Object
36
+ include BaseConvert #=> Object
35
37
 
36
38
  `base_convert` provides three ways to convert a string representation of a number.
37
39
  The first is functional. One can extend(import) the functions that do the conversions.
38
40
  The conversion functions are `to_integer` and `to_base`.
39
41
  For example, the octal number "7777":
40
42
 
41
- extend FUNCTIONS #=> main
42
- digits = ['0','1','2','3','4','5','6','7']
43
+ extend Functions #=> main
44
+ digits = '01234567'
43
45
  base = digits.length #=> 8
44
46
  to_integer('7777', base, digits) #=> 4095
45
47
  to_base(4095, base, digits) #=> "7777"
46
48
 
47
49
  You can work with arbitrary digits:
48
50
 
49
- digits = [')','!','@','#','$','%','^','&']
51
+ digits = ')!@#$%^&'
50
52
  base = digits.length #=> 8
51
53
  to_integer('&&&&', base, digits) #=> 4095
52
54
  to_base(4095, base, digits) #=> "&&&&"
@@ -55,52 +57,52 @@ For convenience, `base_convert` provides two sets of digits.
55
57
  `WORD` are the ASCII word characters except underscore[_].
56
58
  `QGRAPH` are the ASCII graph characters except quotes['"].
57
59
 
58
- CONFIG::WORD #=> ["0","1",... "A","B",... "a","b",... "y","z"]
59
- CONFIG::QGRAPH #=> ["!", "#",... "0","1",... "A","B",... "a","b",... "}", "~"]
60
- to_base(4095, 8, CONFIG::WORD) #=> "7777"
61
- to_base(4095, 8, CONFIG::QGRAPH) #=> "****"
60
+ Configuration::WORD #=> "01...AB...ab...yz"
61
+ Configuration::QGRAPH #=> "!#...01...AB...ab...}~"
62
+ to_base(4095, 8, Configuration::WORD) #=> "7777"
63
+ to_base(4095, 8, Configuration::QGRAPH) #=> "****"
62
64
 
63
- The second way to convert is via a conversion object of `BASE_CONVERT::BaseConvert`.
65
+ The second way to convert is via a conversion object of `BaseConvert::FromTo`.
64
66
  For example, to convert from hexadecimal to octal, and back:
65
67
 
66
- h2o = BaseConvert.new(16, 8)
67
- o2h = BaseConvert.new(8, 16)
68
+ h2o = FromTo.new(16, 8)
69
+ o2h = FromTo.new(8, 16)
68
70
  h2o.convert('FFFF') #=> "177777"
69
71
  o2h.convert('177777') #=> "FFFF"
70
72
 
71
73
  You can access the conversion alphabets via
72
- the accessors BaseConvert#from_digits and BaseConvert#to_digits.
74
+ the accessors FromTo#from_digits and FromTo#to_digits.
73
75
  By default, WORD is used for bases upto 62.
74
76
  For bigger bases upto 91, QGRAPH is used.
75
77
  You can have bigger bases, but
76
78
  you will need to come up with a bigger alphabet, perhaps
77
79
  by adding greek letters.
78
80
  Note that when there's no ambiguity while using WORD,
79
- BaseConvert will upcase the string.
81
+ FromTo will upcase the string.
80
82
 
81
83
  h2o.convert('FFFF') #=> "177777"
82
84
  h2o.convert('ffff') #=> "177777"
83
85
 
84
- BaseConvert also make avalable the intermediary methods that works with integers,
85
- BaseConvert#base2integer and BaseConvert#integer2Base:
86
+ FromTo also makes available the intermediary methods that works with integers,
87
+ FromTo#base2integer and FromTo#integer2Base:
86
88
 
87
89
  h2o.base2integer('FFFF') #=> 65535
88
90
  h2o.integer2base(65535) #=> "177777"
89
91
 
90
92
  The above replaces #base2dec and #dec2base which are now aliases and are deprecated.
91
- The third way to convert is via the subclass of String, `BASE_CONVERT::Number`:
93
+ The third way to convert is via the subclass of String, `BaseConvert::Number`:
92
94
 
93
- hexadecimal = Number.new('FFFF', 16, CONFIG::WORD) #=> "FFFF"
95
+ hexadecimal = Number.new('FFFF', 16, Configuration::WORD) #=> "FFFF"
94
96
  # WORD is the default alphabet
95
97
  hexadecimal = Number.new('FFFF', 16) #=> "FFFF"
96
98
  hexadecimal.to_integer #=> 65535
97
- # Base 10 the default
99
+ # The default base is 10.
98
100
  decimal = Number.new('65535') # "65535"
99
101
  decimal.to_integer #=> 65535
100
102
  decimal.to_base(16) #=> "FFFF"
101
103
  decimal.to_base(8) #=> "177777"
102
104
  # You can also specify the digits to use
103
- digits = [')','!','@','#','$','%','^','&']
105
+ digits = ')!@#$%^&'
104
106
  decimal.to_base(8, digits) #=> "!&&&&&"
105
107
 
106
108
  == INSTALL:
@@ -1,7 +1,7 @@
1
1
  require 'base_convert/version'
2
- require 'base_convert/config'
2
+ require 'base_convert/configuration'
3
3
  require 'base_convert/functions'
4
4
  require 'base_convert/helpers'
5
5
  require 'base_convert/number'
6
- require 'base_convert/base_convert'
6
+ require 'base_convert/from_to'
7
7
  #`ruby`
@@ -1,10 +1,10 @@
1
- module BASE_CONVERT
2
- module CONFIG
1
+ module BaseConvert
2
+ module Configuration
3
3
 
4
- QGRAPH = 0.upto(255).map{|i| i.chr}.select{|c| c=~/[[:graph:]]/ && c=~/[^`'"]/}
4
+ QGRAPH = 0.upto(255).map{|i| i.chr}.select{|c| c=~/[[:graph:]]/ && c=~/[^`'"]/}.join.freeze
5
5
 
6
- WORD = 0.upto(255).map{|i| i.chr}.select{|c| c=~/\w/ && c=~/[^_]/} # 0..9 a..z A..Z
7
- INDEXa = WORD.find_index('a')
6
+ WORD = 0.upto(255).map{|i| i.chr}.select{|c| c=~/\w/ && c=~/[^_]/}.join.freeze # 0..9 a..z A..Z
7
+ INDEXa = WORD.index('a').freeze
8
8
 
9
9
  BASE = {
10
10
  :word => WORD.length,
@@ -0,0 +1,35 @@
1
+ module BaseConvert
2
+ class FromTo
3
+ include Configuration
4
+ extend Functions
5
+ extend Helpers
6
+
7
+ attr_accessor :from_digits, :to_digits
8
+ def initialize(basefrom, baseto=basefrom)
9
+ @basefrom = FromTo.base(basefrom)
10
+ @baseto = FromTo.base(baseto)
11
+ @from_digits = FromTo.digits(basefrom)
12
+ @to_digits = FromTo.digits(baseto)
13
+
14
+ FromTo.validate(@baseto, @to_digits)
15
+ FromTo.validate(@basefrom, @from_digits)
16
+ end
17
+
18
+ def base2integer(string)
19
+ string = string.upcase if FromTo.upcase?(@basefrom, @from_digits) # covenience
20
+ FromTo.validate_string(string, @basefrom, @from_digits)
21
+ FromTo.to_integer(string, @basefrom, @from_digits)
22
+ end
23
+ alias base2dec base2integer
24
+
25
+ def integer2base(integer)
26
+ FromTo.to_base(integer, @baseto, @to_digits)
27
+ end
28
+ alias dec2base integer2base
29
+
30
+ def convert(string)
31
+ integer2base base2integer string.to_s
32
+ end
33
+
34
+ end
35
+ end
@@ -1,18 +1,18 @@
1
1
  # http://rosettacode.org/wiki/Non-decimal_radices/Convert#Ruby
2
- module BASE_CONVERT
3
- module FUNCTIONS
2
+ module BaseConvert
3
+ module Functions
4
4
 
5
5
  def to_integer(string, base, digits)
6
6
  integer = 0
7
7
  string.each_char do |c|
8
- index = digits.find_index(c)
8
+ index = digits.index(c)
9
9
  integer = integer * base + index
10
10
  end
11
11
  integer
12
12
  end
13
13
 
14
14
  def to_base(integer, base, digits)
15
- return digits.first if integer == 0
15
+ return digits[0] if integer == 0
16
16
  string = ''
17
17
  while integer > 0
18
18
  integer, index = integer.divmod(base)
@@ -1,21 +1,21 @@
1
1
  # http://rosettacode.org/wiki/Non-decimal_radices/Convert#Ruby
2
- module BASE_CONVERT
3
- module HELPERS
4
- include CONFIG
2
+ module BaseConvert
3
+ module Helpers
4
+ include Configuration
5
5
 
6
6
  def upcase?(base, digits)
7
7
  base <= INDEXa and digits.equal?(WORD)
8
8
  end
9
9
 
10
10
  def validate(base, digits)
11
- raise 'base is not an integer' unless base.kind_of?(Integer)
12
- raise 'digits not an Array' unless digits.kind_of?(Array)
11
+ raise 'base is not an integer' unless base.kind_of?(Integer)
12
+ raise 'digits not an String' unless digits.kind_of?(String)
13
13
  raise 'base not between 2 and digits.length' unless base.between?(2, digits.length)
14
14
  end
15
15
 
16
16
  def validate_string(string, base, digits)
17
17
  string.chars.uniq.each do |c|
18
- raise 'String has invalid character' unless (i=digits.find_index(c)) and (i<base)
18
+ raise 'String has invalid character' unless (i=digits.index(c)) and (i<base)
19
19
  end
20
20
  end
21
21
 
@@ -1,8 +1,8 @@
1
- module BASE_CONVERT
1
+ module BaseConvert
2
2
  class Number < String
3
- include CONFIG
4
- extend FUNCTIONS
5
- extend HELPERS
3
+ include Configuration
4
+ extend Functions
5
+ extend Helpers
6
6
 
7
7
  def initialize(counter, base=10, digits=Number.digits(base), validate=true)
8
8
  super(counter.to_s)
@@ -1,3 +1,3 @@
1
- module BASE_CONVERT
2
- VERSION = '1.0.0'
1
+ module BaseConvert
2
+ VERSION = '2.0.0'
3
3
  end
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: base_convert
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - CarlosJHR64
7
+ - carlosjhr64
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: test-unit
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.5'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 2.5.5
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '2.5'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 2.5.5
11
+ date: 2014-12-03 00:00:00.000000000 Z
12
+ dependencies: []
33
13
  description: |
34
14
  base_convert - Number base conversion.
35
15
 
@@ -43,24 +23,14 @@ extensions: []
43
23
  extra_rdoc_files:
44
24
  - README.rdoc
45
25
  files:
46
- - History.txt
47
26
  - README.rdoc
48
- - TODO.txt
49
- - base_convert.gemspec
50
27
  - lib/base_convert.rb
51
- - lib/base_convert/base_convert.rb
52
- - lib/base_convert/config.rb
28
+ - lib/base_convert/configuration.rb
29
+ - lib/base_convert/from_to.rb
53
30
  - lib/base_convert/functions.rb
54
31
  - lib/base_convert/helpers.rb
55
32
  - lib/base_convert/number.rb
56
33
  - lib/base_convert/version.rb
57
- - test/test_base_convert.rb
58
- - test/test_functions.rb
59
- - test/test_helpers.rb
60
- - test/test_number.rb
61
- - test/test_original.rb
62
- - test/test_original2.rb
63
- - test/test_trivial.rb
64
34
  homepage: https://github.com/carlosjhr64/base_convert
65
35
  licenses:
66
36
  - MIT
@@ -82,10 +52,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
52
  - !ruby/object:Gem::Version
83
53
  version: '0'
84
54
  requirements:
85
- - 'ruby: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]'
55
+ - 'ruby: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]'
56
+ - 'join: join (GNU coreutils) 8.21'
86
57
  rubyforge_project:
87
- rubygems_version: 2.2.0
58
+ rubygems_version: 2.4.1
88
59
  signing_key:
89
60
  specification_version: 4
90
61
  summary: base_convert - Number base conversion.
91
62
  test_files: []
63
+ has_rdoc:
@@ -1,3 +0,0 @@
1
- 0.0.0 September 24, 2011 (5.5 KB) yanked
2
- 0.0.1 September 24, 2011 (5.5 KB) yanked
3
- 0.0.2 February 12, 2014 (6.5 KB)
data/TODO.txt DELETED
@@ -1,3 +0,0 @@
1
- == File List
2
-
3
-
@@ -1,55 +0,0 @@
1
- Gem::Specification.new do |s|
2
-
3
- s.name = 'base_convert'
4
- s.version = '1.0.0'
5
-
6
- s.homepage = 'https://github.com/carlosjhr64/base_convert'
7
-
8
- s.author = 'CarlosJHR64'
9
- s.email = 'carlosjhr64@gmail.com'
10
-
11
- s.date = '2014-02-13'
12
- s.licenses = ['MIT']
13
-
14
- s.description = <<DESCRIPTION
15
- base_convert - Number base conversion.
16
-
17
- Converts positive integers to different bases:
18
- Binary, octal, hexadecimal, decimal, or any arbitrary base.
19
- "Out of the box" handling of up to base 91.
20
- Allows for arbitrary choice of alphabet(digits).
21
- DESCRIPTION
22
-
23
- s.summary = <<SUMMARY
24
- base_convert - Number base conversion.
25
- SUMMARY
26
-
27
- s.extra_rdoc_files = ['README.rdoc']
28
- s.rdoc_options = ["--main", "README.rdoc"]
29
-
30
- s.require_paths = ["lib"]
31
- s.files = %w(
32
- History.txt
33
- README.rdoc
34
- TODO.txt
35
- base_convert.gemspec
36
- lib/base_convert.rb
37
- lib/base_convert/base_convert.rb
38
- lib/base_convert/config.rb
39
- lib/base_convert/functions.rb
40
- lib/base_convert/helpers.rb
41
- lib/base_convert/number.rb
42
- lib/base_convert/version.rb
43
- test/test_base_convert.rb
44
- test/test_functions.rb
45
- test/test_helpers.rb
46
- test/test_number.rb
47
- test/test_original.rb
48
- test/test_original2.rb
49
- test/test_trivial.rb
50
- )
51
-
52
- s.add_development_dependency 'test-unit', '~> 2.5', '>= 2.5.5'
53
- s.requirements << 'ruby: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]'
54
-
55
- end
@@ -1,35 +0,0 @@
1
- module BASE_CONVERT
2
- class BaseConvert
3
- include CONFIG
4
- extend FUNCTIONS
5
- extend HELPERS
6
-
7
- attr_accessor :from_digits, :to_digits
8
- def initialize(basefrom, baseto=basefrom)
9
- @basefrom = BaseConvert.base(basefrom)
10
- @baseto = BaseConvert.base(baseto)
11
- @from_digits = BaseConvert.digits(basefrom)
12
- @to_digits = BaseConvert.digits(baseto)
13
-
14
- BaseConvert.validate(@baseto, @to_digits)
15
- BaseConvert.validate(@basefrom, @from_digits)
16
- end
17
-
18
- def base2integer(string)
19
- string = string.upcase if BaseConvert.upcase?(@basefrom, @from_digits) # covenience
20
- BaseConvert.validate_string(string, @basefrom, @from_digits)
21
- BaseConvert.to_integer(string, @basefrom, @from_digits)
22
- end
23
- alias base2dec base2integer
24
-
25
- def integer2base(integer)
26
- BaseConvert.to_base(integer, @baseto, @to_digits)
27
- end
28
- alias dec2base integer2base
29
-
30
- def convert(string)
31
- integer2base base2integer string.to_s
32
- end
33
-
34
- end
35
- end
@@ -1,56 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert'
3
-
4
- class TestBaseConvert < Test::Unit::TestCase
5
- include BASE_CONVERT
6
- include CONFIG
7
-
8
- def test_001_new
9
- wl = WORD.length
10
-
11
- base = BaseConvert.new(10, 16)
12
- assert base.from_digits.equal?(WORD)
13
- assert base.to_digits.equal?(WORD)
14
-
15
- base = BaseConvert.new(70, 8)
16
- assert base.from_digits.equal?(QGRAPH)
17
- assert base.to_digits.equal?(WORD)
18
-
19
- base = BaseConvert.new(wl, 90)
20
- assert base.from_digits.equal?(WORD)
21
- assert base.to_digits.equal?(QGRAPH)
22
-
23
- base = BaseConvert.new(wl+1, wl+2)
24
- assert base.from_digits.equal?(QGRAPH)
25
- assert base.to_digits.equal?(QGRAPH)
26
-
27
- base = BaseConvert.new(:word, :qgraph)
28
- assert base.from_digits.equal?(WORD)
29
- assert base.to_digits.equal?(QGRAPH)
30
-
31
- base = BaseConvert.new(:qgraph, :word)
32
- assert base.from_digits.equal?(QGRAPH)
33
- assert base.to_digits.equal?(WORD)
34
-
35
- a = base.base2integer('z')
36
- assert_equal(Fixnum, a.class)
37
- assert_equal(86, a)
38
-
39
- a = base.integer2base(16)
40
- assert_equal(String, a.class)
41
- assert_equal('G', a)
42
-
43
- a = base.convert('z')
44
- assert_equal(String, a.class)
45
- base = BaseConvert.new(:word, :qgraph)
46
- a = base.convert(a)
47
- assert_equal('z', a)
48
-
49
- base = BaseConvert.new(:hex, :oct)
50
- assert_equal('7777', base.convert('FFF'))
51
- assert_equal('7777', base.convert('fff')) # Tests the upcase convenience
52
-
53
- base = BaseConvert.new(:oct, :hex)
54
- assert_equal('FFF', base.convert('7777'))
55
- end
56
- end
@@ -1,34 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert/config'
3
- require 'base_convert/functions'
4
-
5
- class TestFunctions < Test::Unit::TestCase
6
- include BASE_CONVERT
7
- include CONFIG
8
- extend FUNCTIONS
9
-
10
- HEX = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
11
-
12
- def test_001_to_integer
13
- a = TestFunctions.to_integer('0', 16, HEX)
14
- assert_equal(0, a)
15
- a = TestFunctions.to_integer('a', 16, HEX)
16
- assert_equal(10, a)
17
- a = TestFunctions.to_integer('f', 16, HEX)
18
- assert_equal(15, a)
19
- a = TestFunctions.to_integer('abcdef', 16, HEX)
20
- assert_equal(11259375, a)
21
- end
22
-
23
- def test_002_to_base
24
- a = TestFunctions.to_base(0, 16, WORD)
25
- assert_equal('0', a)
26
- a = TestFunctions.to_base(10, 16, WORD)
27
- assert_equal('A', a)
28
- a = TestFunctions.to_base(15, 16, WORD)
29
- assert_equal('F', a)
30
- a = TestFunctions.to_base(11259375, 16, WORD)
31
- assert_equal('ABCDEF', a)
32
- end
33
-
34
- end
@@ -1,99 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert/config'
3
- require 'base_convert/helpers'
4
-
5
- class TestHelpers < Test::Unit::TestCase
6
- include BASE_CONVERT
7
- include CONFIG
8
- extend HELPERS
9
-
10
- HEX = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
11
-
12
- def test_003_upcase
13
- assert(TestHelpers.upcase?(36, WORD))
14
- refute(TestHelpers.upcase?(36, HEX))
15
- refute(TestHelpers.upcase?(37, WORD))
16
- end
17
-
18
- def test_004_validate
19
- assert_raises(RuntimeError){ TestHelpers.validate(5.0, WORD) }
20
- assert_nothing_raised(Exception){ TestHelpers.validate(5, WORD) }
21
-
22
- assert_raises(RuntimeError){ TestHelpers.validate(5, '0123456789abdef') }
23
- assert_nothing_raised(Exception){ TestHelpers.validate(5, ['0', '1', '2', '3', '4']) }
24
-
25
- assert_raises(RuntimeError){ TestHelpers.validate(5, ['0', '1', '2', '3']) }
26
- assert_nothing_raised(Exception){ TestHelpers.validate(5, ['0', '1', '2', '3', '4', '5', '6']) }
27
-
28
- assert_raises(RuntimeError){ TestHelpers.validate(1, ['0', '1']) }
29
- assert_nothing_raised(Exception){ TestHelpers.validate(2, ['0', '1']) }
30
- end
31
-
32
- def test_005_validate_string
33
- assert_raises(RuntimeError){ TestHelpers.validate_string('xyz', 3, ['a','b','c']) }
34
- assert_nothing_raised(Exception){ TestHelpers.validate_string('xyz', 3, ['x','y','z']) }
35
- assert_nothing_raised(Exception){ TestHelpers.validate_string('xyz', 3, ['x','y','z','a','b','c']) }
36
- assert_raises(RuntimeError){ TestHelpers.validate_string('abc', 3, ['x','y','z','a','b','c']) }
37
- assert_nothing_raised(Exception){ TestHelpers.validate_string('abc', 6, ['x','y','z','a','b','c']) }
38
- end
39
-
40
- def test_006_digits
41
- wl = WORD.length
42
-
43
- a = TestHelpers.digits(wl)
44
- assert(a.equal?(WORD))
45
-
46
- a = TestHelpers.digits(wl+1)
47
- assert(a.equal?(QGRAPH))
48
-
49
- a = TestHelpers.digits(:word)
50
- assert(a.equal?(WORD))
51
-
52
- a = TestHelpers.digits(:qgraph)
53
- assert(a.equal?(QGRAPH))
54
-
55
- a = TestHelpers.digits(:hex)
56
- assert(a.equal?(WORD))
57
-
58
- DIGITS[:my_digits] = ['X','Y','Z']
59
- a = TestHelpers.digits(:my_digits)
60
- assert(a.equal?(DIGITS[:my_digits]))
61
-
62
- BASE[:my_base] = wl
63
- a = TestHelpers.digits(:my_base)
64
- assert(a.equal?(WORD))
65
-
66
- BASE[:my_base] = wl+1
67
- a = TestHelpers.digits(:my_base)
68
- assert(a.equal?(QGRAPH))
69
- end
70
-
71
- def test_007_base
72
- wl = WORD.length
73
- ql = QGRAPH.length
74
-
75
- a = TestHelpers.base(:word)
76
- assert_equal(wl, a)
77
-
78
- a = TestHelpers.base(:qgraph)
79
- assert_equal(ql, a)
80
-
81
- a = TestHelpers.base(:hex)
82
- assert_equal(16, a)
83
- a = TestHelpers.base(:hexadecimal)
84
- assert_equal(16, a)
85
-
86
- a = TestHelpers.base(:decimal)
87
- assert_equal(10, a)
88
- a = TestHelpers.base(:dec)
89
- assert_equal(10, a)
90
-
91
- a = TestHelpers.base(:octal)
92
- assert_equal(8, a)
93
- a = TestHelpers.base(:oct)
94
- assert_equal(8, a)
95
-
96
- a = TestHelpers.base(:binary)
97
- assert_equal(2, a)
98
- end
99
- end
@@ -1,21 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert'
3
-
4
- class TestNumber < Test::Unit::TestCase
5
- include BASE_CONVERT
6
- include CONFIG
7
-
8
- def test_001_new
9
- a = Number.new(100)
10
- assert_equal '100', a
11
- a = Number.new('100')
12
- assert_equal '100', a
13
- assert_equal 100, a.to_integer
14
-
15
- assert_raises(RuntimeError){ Number.new('FFF') }
16
- a = Number.new('FFF', 16)
17
- assert_equal 'FFF', a
18
- assert_equal '7777', a.to_base(8)
19
- assert_equal 'FFF', a.to_base(8).to_base(16)
20
- end
21
- end
@@ -1,47 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert'
3
- require 'digest'
4
-
5
- class TestOriginal < Test::Unit::TestCase
6
- include BASE_CONVERT
7
-
8
- def test_001_to_s_n
9
- # test against number.to_s(n)
10
- 2.upto(36) do |n|
11
- # Converts to base n.
12
- base = BaseConvert.new(n)
13
- 100.times do
14
- number = rand(10000)
15
- string = number.to_s(n)
16
- # BaseConvert uses caps
17
- assert_equal(string.upcase, base.integer2base(number))
18
- # and it will automatically upcase
19
- assert_equal(number, base.base2integer(string))
20
- end
21
- end
22
- end
23
-
24
- def test_002_hello_world
25
- hexdigest = Digest::SHA256.hexdigest('Hello World!') # and verified below
26
- assert_equal '7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069', hexdigest
27
-
28
- word = BaseConvert.new(:hex, :word).convert(hexdigest)
29
- assert_equal 'UEjKBW7lvEq1KjyCxAYQRJqmvffQEbwLNvzs8Ggdy4P', word
30
-
31
- assert_equal hexdigest.upcase, BaseConvert.new(:word, :hex).convert(word)
32
-
33
- qstring = '$<c6PCX_mugC58xfO5JOp+V4|<jHekI^_WE$?d?9'
34
- assert_equal qstring, BaseConvert.new(:hex, :qgraph).convert(hexdigest)
35
- assert_equal hexdigest.upcase, BaseConvert.new(:qgraph, :hex).convert(qstring)
36
- end
37
-
38
- def test_003_hundred_million
39
- assert_equal '6laZE', BaseConvert.new(10, 62).convert( 100_000_000 )
40
- assert_equal ')8]3H', BaseConvert.new(63).integer2base( 100_000_000 )
41
-
42
- base = BaseConvert.new(62)
43
- base.to_digits = BaseConvert::QGRAPH
44
- assert_equal ')RGF1', base.integer2base( 100_000_000 )
45
- end
46
-
47
- end
@@ -1,66 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert'
3
- require 'digest'
4
-
5
- # Using my original tests on BASE_CONVERT::Number
6
- class TestOriginal2 < Test::Unit::TestCase
7
- include BASE_CONVERT
8
-
9
- def test_001_to_s_n
10
- # test against number.to_s(base)
11
- 2.upto(36) do |base|
12
- 100.times do
13
- decimal = rand(10000)
14
-
15
- decimal0 = decimal.to_s
16
- decimal1 = Number.new(decimal)
17
- assert_equal(decimal0, decimal1)
18
-
19
- base0 = decimal.to_s(base)
20
- base1 = decimal1.to_base(base)
21
-
22
- # BaseConvert uses caps
23
- assert_equal(base0.upcase, base1)
24
- assert_equal(decimal1, base1.to_base(10))
25
- # and it will automatically upcase
26
- assert_equal(decimal1, Number.new(base0, base).to_base(10))
27
- end
28
- end
29
- end
30
-
31
- def test_002_hello_world
32
- hexdigest = Number.new(Digest::SHA256.hexdigest('Hello World!'), :hex)
33
- # and verified below (BaseConvert uses uppecase for hexadeximals.
34
- assert_equal '7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069'.upcase, hexdigest
35
-
36
- #word = BaseConvert.new(:hex, :word).convert(hexdigest)
37
- word = hexdigest.to_base(:word)
38
- assert_equal 'UEjKBW7lvEq1KjyCxAYQRJqmvffQEbwLNvzs8Ggdy4P', word
39
-
40
- #assert_equal hexdigest.upcase, BaseConvert.new(:word, :hex).convert(word)
41
- assert_equal hexdigest, word.to_base(:hex)
42
-
43
- qstring = Number.new('$<c6PCX_mugC58xfO5JOp+V4|<jHekI^_WE$?d?9', :qgraph)
44
- # and verified below
45
- assert_equal '$<c6PCX_mugC58xfO5JOp+V4|<jHekI^_WE$?d?9', qstring
46
- #assert_equal qstring, BaseConvert.new(:hex, :qgraph).convert(hexdigest)
47
- assert_equal qstring, hexdigest.to_base(:qgraph)
48
-
49
- assert_equal hexdigest, qstring.to_base(:hex)
50
- end
51
-
52
- def test_003_hundred_million
53
- hudred_million = Number.new(100_000_000)
54
- assert_equal '100000000', hudred_million
55
- #assert_equal '6laZE', BaseConvert.new(10, 62).convert( 100_000_000 )
56
- assert_equal '6laZE', hudred_million.to_base(62)
57
- #assert_equal ')8]3H', BaseConvert.new(63).integer2base( 100_000_000 )
58
- assert_equal ')8]3H', hudred_million.to_base(63)
59
-
60
- #base = BaseConvert.new(62)
61
- #base.to_digits = BaseConvert::QGRAPH
62
- #assert_equal ')RGF1', base.integer2base( 100_000_000 )
63
- assert_equal ')RGF1', hudred_million.to_base(62, BaseConvert::QGRAPH)
64
- end
65
-
66
- end
@@ -1,48 +0,0 @@
1
- require 'test/unit'
2
- require 'base_convert'
3
-
4
- class TestTrivial < Test::Unit::TestCase
5
-
6
- def test_001_version
7
- assert_not_nil BASE_CONVERT::VERSION=~/^\d+\.\d+\.\d+$/
8
- end
9
-
10
- def test_002_qgraph
11
- a = BASE_CONVERT::CONFIG::QGRAPH
12
- assert_equal(91, a.length)
13
- refute(a.include?('"'))
14
- refute(a.include?("'"))
15
- assert_equal('!', a.first)
16
- end
17
-
18
- def test_003_word
19
- a = BASE_CONVERT::CONFIG::WORD
20
- assert_equal(62, a.length)
21
- refute(a.include?('_'))
22
- assert_equal('0', a.first)
23
- assert_equal(36, BASE_CONVERT::CONFIG::INDEXa)
24
- assert_equal('a', a[36])
25
- end
26
-
27
- def test_004_base
28
- a = BASE_CONVERT::CONFIG::BASE
29
- assert_equal(Hash, a.class)
30
- assert_equal(62, a[:word])
31
- assert_equal(91, a[:qgraph])
32
- assert_equal(16, a[:hex])
33
- assert_equal(16, a[:hexadecimal])
34
- assert_equal(10, a[:decimal])
35
- assert_equal(10, a[:dec])
36
- assert_equal(8, a[:octal])
37
- assert_equal(8, a[:oct])
38
- assert_equal(2, a[:binary])
39
- end
40
-
41
- def test_005_digits
42
- a = BASE_CONVERT::CONFIG::DIGITS
43
- assert_equal(Hash, a.class)
44
- assert(a[:word].equal?(BASE_CONVERT::CONFIG::WORD))
45
- assert(a[:qgraph].equal?(BASE_CONVERT::CONFIG::QGRAPH))
46
- end
47
-
48
- end