diff options
Diffstat (limited to 'code/environments/production/modules/stdlib/spec/acceptance/num2bool_spec.rb')
-rw-r--r-- | code/environments/production/modules/stdlib/spec/acceptance/num2bool_spec.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/code/environments/production/modules/stdlib/spec/acceptance/num2bool_spec.rb b/code/environments/production/modules/stdlib/spec/acceptance/num2bool_spec.rb new file mode 100644 index 0000000..d95cb93 --- /dev/null +++ b/code/environments/production/modules/stdlib/spec/acceptance/num2bool_spec.rb @@ -0,0 +1,76 @@ +require 'spec_helper_acceptance' + +describe 'num2bool function' do + describe 'success' do + pp1 = <<-DOC + $a = 1 + $b = "1" + $c = "50" + $ao = num2bool($a) + $bo = num2bool($b) + $co = num2bool($c) + notice(inline_template('a is <%= @ao.inspect %>')) + notice(inline_template('b is <%= @bo.inspect %>')) + notice(inline_template('c is <%= @co.inspect %>')) + DOC + regex_array_true = [%r{a is true}, %r{b is true}, %r{c is true}] + it 'bools positive numbers and numeric strings as true' do + apply_manifest(pp1, :catch_failures => true) do |r| + regex_array_true.each do |i| + expect(r.stdout).to match(i) + end + end + end + + pp2 = <<-DOC + $a = 0 + $b = -0.1 + $c = ["-50","1"] + $ao = num2bool($a) + $bo = num2bool($b) + $co = num2bool($c) + notice(inline_template('a is <%= @ao.inspect %>')) + notice(inline_template('b is <%= @bo.inspect %>')) + notice(inline_template('c is <%= @co.inspect %>')) + DOC + regex_array_false = [%r{a is false}, %r{b is false}, %r{c is false}] + it 'bools negative numbers as false' do + apply_manifest(pp2, :catch_failures => true) do |r| + regex_array_false.each do |i| + expect(r.stdout).to match(i) + end + end + end + end + + describe 'failure' do + pp3 = <<-DOC + $a = "a" + $ao = num2bool($a) + notice(inline_template('a is <%= @ao.inspect %>')) + DOC + it 'fails on words' do + expect(apply_manifest(pp3, :expect_failures => true).stderr).to match(%r{not look like a number}) + end + + pp4 = <<-DOC + $b = "1b" + $bo = num2bool($b) + notice(inline_template('b is <%= @bo.inspect %>')) + DOC + it 'fails on numberwords' do + expect(apply_manifest(pp4, :expect_failures => true).stderr).to match(%r{not look like a number}) + end + + pp5 = <<-DOC # rubocop:disable Lint/UselessAssignment + $c = {"c" => "-50"} + $co = num2bool($c) + notice(inline_template('c is <%= @co.inspect %>')) + DOC + it 'fails on non-numeric/strings' do + pending "The function will call .to_s.to_i on anything not a Numeric or + String, and results in 0. Is this intended?" + expect(apply_manifest(pp5(:expect_failures => true)).stderr).to match(%r{Unable to parse}) + end + end +end |