Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion kafo.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = '>= 2.7'

spec.add_development_dependency 'bundler', '>= 1.3', '< 3'
spec.add_development_dependency 'minitest'
spec.add_development_dependency 'minitest', '< 6'
spec.add_development_dependency 'minitest-reporters'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'simplecov'
Expand Down
10 changes: 10 additions & 0 deletions lib/kafo/data_types/boolean.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
module Kafo
module DataTypes
class Boolean < DataType
def initialize(*permitted)
@permitted = permitted
end

def typecast(value)
case value
when '0', 'false', 'f', 'n', false
Expand All @@ -16,6 +20,12 @@ def valid?(input, errors = [])
(input.is_a?(::TrueClass) || input.is_a?(::FalseClass)).tap do |valid|
errors << "#{input.inspect} is not a valid boolean" unless valid
end

unless @permitted.empty? || @permitted.include?(input)
errors << "#{input} must be one of #{@permitted.join(', ')}"
end

return errors.empty?
end
end

Expand Down
6 changes: 4 additions & 2 deletions lib/kafo/data_types/struct.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ def initialize(spec)
@spec = ::Hash[spec.map do |k,v|
begin
k = DataType.new_from_string(k)
rescue ConfigurationException; end
rescue ConfigurationException
end
begin
v = DataType.new_from_string(v)
rescue ConfigurationException; end
rescue ConfigurationException
end
[k, v]
end]
end
Expand Down
3 changes: 3 additions & 0 deletions test/kafo/data_types/boolean_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module DataTypes
describe Boolean do
describe "registered" do
it { _(DataType.new_from_string('Boolean')).must_be_instance_of Boolean }
it { _(DataType.new_from_string('Boolean[false]')).must_be_instance_of Boolean }
end

describe "#typecast" do
Expand All @@ -21,6 +22,8 @@ module DataTypes
it { _(Boolean.new.valid?(true)).must_equal true }
it { _(Boolean.new.valid?(false)).must_equal true }
it { _(Boolean.new.valid?('foo')).must_equal false }
it { _(Boolean.new(false).valid?(true)).must_equal false }
it { _(Boolean.new(false).valid?(false)).must_equal true }
end
end
end
Expand Down
Loading