From 1653dd9727044c9baff157c749b1169877550250 Mon Sep 17 00:00:00 2001 From: carlosjhr64 Date: Tue, 31 Dec 2019 14:54:11 -0800 Subject: [PATCH] tc_keys --- lib/base_convert/number.rb | 4 +-- test/tc_keys | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 test/tc_keys diff --git a/lib/base_convert/number.rb b/lib/base_convert/number.rb index 5dd2ca5..58eae4e 100644 --- a/lib/base_convert/number.rb +++ b/lib/base_convert/number.rb @@ -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 @@ -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 diff --git a/test/tc_keys b/test/tc_keys new file mode 100644 index 0000000..641ab38 --- /dev/null +++ b/test/tc_keys @@ -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