class DiamondsTest < Test::Unit::TestCase
  def setup
    @dataset = Datasets::Diamonds.new
  end

  def record(*args)
    Datasets::Diamonds::Record.new(*args)
  end

  test("#each") do
    assert_equal({
                   carat: 0.23,
                   clarity: "SI2",
                   color: "E",
                   cut: "Ideal",
                   depth: 61.5,
                   price: 326,
                   table: 55.0,
                   x: 3.95,
                   y: 3.98,
                   z: 2.43,
                 },
                 @dataset.each.next.to_h)
  end

  sub_test_case("#metadata") do
    test("#description") do
      description = @dataset.metadata.description
      assert_equal(<<-DESCRIPTION, description)
Prices of over 50,000 round cut diamonds

A dataset containing the prices and other attributes of almost 54,000
 diamonds. The variables are as follows:

A data frame with 53940 rows and 10 variables:

  * price: price in US dollars ($326--$18,823)
  * carat: weight of the diamond (0.2--5.01)
  * cut: quality of the cut (Fair, Good, Very Good, Premium, Ideal)
  * color: diamond colour, from D (best) to J (worst)
  * clarity: a measurement of how clear the diamond is (I1 (worst), SI2,
    SI1, VS2, VS1, VVS2, VVS1, IF (best))
  * x: length in mm (0--10.74)
  * y: width in mm (0--58.9)
  * z: depth in mm (0--31.8)
  * depth: total depth percentage = z / mean(x, y) = 2 * z / (x + y) (43--79)
  * table: width of top of diamond relative to widest point (43--95)
      DESCRIPTION
    end
  end
end
