Sha256: 09984309fb036288a4e2bbb8622c7e441270b30e3a483ccd850c1c062e3677f2

Contents?: true

Size: 1.88 KB

Versions: 9

Compression:

Stored size: 1.88 KB

Contents

require 'spec_helper'

describe Prawn::SVG::Elements::Gradient do
  let(:document) { Prawn::SVG::Document.new(svg, [800, 600], {width: 800, height: 600}) }
  let(:element)  { Prawn::SVG::Elements::Gradient.new(document, document.root, [], fake_state) }

  before do
    allow(element).to receive(:assert_compatible_prawn_version)
    element.process
  end

  describe "object bounding box" do
    let(:svg) do
      <<-SVG
        <linearGradient id="flag" x1="0" x2="0.2" y1="0" y2="1">
          <stop offset="25%" stop-color="red"/>
          <stop offset="50%" stop-color="white"/>
          <stop offset="75%" stop-color="blue"/>
        </linearGradient>
      SVG
    end

    it "is stored in the document gradients table" do
      expect(document.gradients["flag"]).to eq element
    end

    it "returns correct gradient arguments for an element" do
      arguments = element.gradient_arguments(double(bounding_box: [100, 100, 200, 0]))
      expect(arguments).to eq(
        from: [100.0, 100.0],
        to:   [120.0, 0.0],
        stops: [[0, "ff0000"], [0.25, "ff0000"], [0.5, "ffffff"], [0.75, "0000ff"], [1, "0000ff"]]
      )
    end

    it "returns nil if the element doesn't have a bounding box" do
      arguments = element.gradient_arguments(double(bounding_box: nil))
      expect(arguments).to be nil
    end
  end

  describe "user space on use" do
    let(:svg) do
      <<-SVG
        <linearGradient id="flag" gradientUnits="userSpaceOnUse" x1="100" y1="500" x2="200" y2="600">
          <stop offset="0" stop-color="red"/>
          <stop offset="1" stop-color="blue"/>
        </linearGradient>
      SVG
    end

    it "returns correct gradient arguments for an element" do
      arguments = element.gradient_arguments(double)
      expect(arguments).to eq(
        from: [100.0, 100.0],
        to:   [200.0, 0.0],
        stops: [[0, "ff0000"], [1, "0000ff"]]
      )
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
prawn-svg-0.29.1 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.29.0 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.28.0 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.27.1 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.27.0 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.26.0 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.25.2 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.25.1 spec/prawn/svg/elements/gradient_spec.rb
prawn-svg-0.25.0 spec/prawn/svg/elements/gradient_spec.rb