Sha256: 7146bced1ca2dd1eea16cd0e9bdc0e441d742a4ee1313f8cda2eff7fe4ae3862

Contents?: true

Size: 1.22 KB

Versions: 99

Compression:

Stored size: 1.22 KB

Contents

require "spec_helper"

describe SafeYAML::Transform::ToFloat do
  it "returns true when the value matches a valid Float" do
    expect(subject.transform?("20.00")).to eq([true, 20.0])
  end

  it "returns false when the value does not match a valid Float" do
    expect(subject.transform?("foobar")).to be_falsey
  end

  it "returns false when the value spans multiple lines" do
    expect(subject.transform?("20.00\nNOT A FLOAT")).to be_falsey
  end

  it "correctly parses all formats in the YAML spec" do
    # canonical
    expect(subject.transform?("6.8523015e+5")).to eq([true, 685230.15])

    # exponentioal
    expect(subject.transform?("685.230_15e+03")).to eq([true, 685230.15])

    # fixed
    expect(subject.transform?("685_230.15")).to eq([true, 685230.15])

    # sexagesimal
    expect(subject.transform?("190:20:30.15")).to eq([true, 685230.15])

    # infinity
    expect(subject.transform?("-.inf")).to eq([true, (-1.0 / 0.0)])

    # not a number
    # NOTE: can't use == here since NaN != NaN
    success, result = subject.transform?(".NaN")
    expect(success).to be_truthy; expect(result).to be_nan
  end

  # issue 29
  it "returns false for the string '.'" do
    expect(subject.transform?(".")).to be_falsey
  end
end

Version data entries

99 entries across 91 versions & 13 rubygems

Version Path
cloudsmith-api-0.53.3 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.53.1 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.52.121 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.52.92 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.52.79 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.52.5 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.52.0 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.51.93 vendor/bundle/ruby/2.3.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.51.38 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.51.37 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.51.34 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.51.22 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.49.118 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.49.98 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.49.94 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.49.21 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb
cloudsmith-api-0.49.15 vendor/bundle/ruby/2.6.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb