Skip to content

Commit

Permalink
tc_keys
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosjhr64 committed Dec 31, 2019
1 parent 241c889 commit 1653dd9
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/base_convert/number.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def self.infer(string)
end

attr_reader :base, :digits
def initialize(counter, base: nil, digits: nil, validate: true)
def initialize(counter=0, base: nil, digits: nil, validate: true)
# validate
case validate
when true, false
Expand All @@ -47,7 +47,7 @@ def initialize(counter, base: nil, digits: nil, validate: true)
digits = DIGITS[digits]
raise "Unrecognized digits." if digits.nil?
end
digits = DIGITS[@base] if digits.nil?
digits = DIGITS[base] if digits.nil?
digits = G94 if digits.nil?
raise "digits must be a String of at least length 2." unless digits.is_a?(String) and digits.length > 1
@digits = digits
Expand Down
64 changes: 64 additions & 0 deletions test/tc_keys
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#! ruby
require 'test/unit'
require 'base_convert'

# Just additional tests beyond original tc_number
# for version 3.1.

class TestKeys < Test::Unit::TestCase
include BaseConvert

def test_keys_base64
[BASE64, :base64, :b64].each do |digits|
n = Number.new 63, digits: digits
assert_equal 64, n.base
assert_equal 63, n.to_i
assert_equal '/', n.to_s
assert_equal BASE64, n.digits
end

[:base64, :b64].each do |base|
n = Number.new 63, base: :base64
assert_equal 64, n.base
assert_equal 63, n.to_i
assert_equal '/', n.to_s
assert_equal BASE64, n.digits
end
end

def test_keys_all
(DIGITS.keys + BASE.keys).uniq.each do |key|
digits = DIGITS[key] || G94
base = BASE[key]

n = Number.new base: key
assert_equal 0, n.to_i
assert_equal digits[0], n.to_s
assert_equal base, n.base
assert_equal digits, n.digits

e = Number.new '', base: key
assert_equal 0, e.to_i
assert_equal '', e.to_s
assert_equal base, e.base
assert_equal digits, e.digits
end

DIGITS.keys.each do |key|
digits = DIGITS[key]
base = BASE[key]

n = Number.new digits: key
assert_equal 0, n.to_i
assert_equal digits[0], n.to_s
assert_equal base, n.base
assert_equal digits, n.digits

e = Number.new '', digits: key
assert_equal 0, e.to_i
assert_equal '', e.to_s
assert_equal base, e.base
assert_equal digits, e.digits
end
end
end

0 comments on commit 1653dd9

Please sign in to comment.