Sha256: 232d8af467048c729d4b1aa05dad30c06a5b1537822e9f00d7f777b6989c9df0

Contents?: true

Size: 1.46 KB

Versions: 8

Compression:

Stored size: 1.46 KB

Contents

describe "d3 - polygon" do
  let(:square) {
    [[10,10], [40,10], [40,40], [10,40]]
  }
  let(:triangle) {
    [[100,0], [160,0], [130, 40]]
  }
  let(:random_points) {[
    [6, 39], [59, 86], [96, 20], [56, 5], [96, 98],
    [70, 4], [47, 48], [77, 15], [2, 60], [41, 28],
    [56, 59], [10, 15], [79, 12], [82, 97], [71, 14],
    [18, 30], [64, 86], [35, 83], [49, 73], [78, 12],
  ]}

  # signed area
  it "d3.polygon_area" do
    expect(D3.polygon_area(square)).to eq(-900)
    expect(D3.polygon_area(triangle)).to eq(-1200)
  end

  it "d3.polygon_centroid" do
    expect(D3.polygon_centroid(square)).to eq([25, 25])
    expect(D3.polygon_centroid(triangle)).to eq([130, 13.333333333333334])
  end

  it "d3.polygon_length" do
    expect(D3.polygon_length(square)).to eq(120)
    expect(D3.polygon_length(triangle)).to eq(160)
  end

  it "d3.polygon_contains?" do
    expect(D3.polygon_contains?(square, [20, 20])).to eq(true)
    expect(D3.polygon_contains?(square, [50, 20])).to eq(false)
    # Sometimes corners considered "inside"
    expect(D3.polygon_contains?(square, [10, 10])).to eq(true)
  end

  it "d3.polygon_hull" do
    hull = D3.polygon_hull(random_points)
    hull.each do |pt|
      expect(random_points).to include(pt)
    end

    random_points.each do |pt|
      # Sometimes corners not considered "inside"
      expect(D3.polygon_contains?(hull, pt) || hull.include?(pt)).to eq(true)
    end

    expect(D3.polygon_hull([[10,10], [20,20]])).to eq(nil)
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
hyper-d3-1.0.0.lap28 spec/polygon_spec.rb
hyper-d3-1.0.0.lap27 spec/polygon_spec.rb
hyper-d3-1.0.0.lap26 spec/polygon_spec.rb
hyper-d3-1.0.0.lap25 spec/polygon_spec.rb
hyper-d3-1.0.0.lap24 spec/polygon_spec.rb
hyper-d3-1.0.0.lap23 spec/polygon_spec.rb
opal-d3-0.0.20170822 spec/polygon_spec.rb
opal-d3-0.0.20170205 spec/polygon_spec.rb