gem 'minitest' require 'minitest/autorun' require 'color' module TestColor class TestCMYK < Minitest::Test def setup @cmyk = Color::CMYK.new(10, 20, 30, 40) end def test_cyan assert_in_delta(0.1, @cmyk.c, Color::COLOR_TOLERANCE) assert_in_delta(10, @cmyk.cyan, Color::COLOR_TOLERANCE) @cmyk.cyan = 20 assert_in_delta(0.2, @cmyk.c, Color::COLOR_TOLERANCE) @cmyk.c = 2.0 assert_in_delta(100, @cmyk.cyan, Color::COLOR_TOLERANCE) @cmyk.c = -1.0 assert_in_delta(0.0, @cmyk.c, Color::COLOR_TOLERANCE) end def test_magenta assert_in_delta(0.2, @cmyk.m, Color::COLOR_TOLERANCE) assert_in_delta(20, @cmyk.magenta, Color::COLOR_TOLERANCE) @cmyk.magenta = 30 assert_in_delta(0.3, @cmyk.m, Color::COLOR_TOLERANCE) @cmyk.m = 2.0 assert_in_delta(100, @cmyk.magenta, Color::COLOR_TOLERANCE) @cmyk.m = -1.0 assert_in_delta(0.0, @cmyk.m, Color::COLOR_TOLERANCE) end def test_yellow assert_in_delta(0.3, @cmyk.y, Color::COLOR_TOLERANCE) assert_in_delta(30, @cmyk.yellow, Color::COLOR_TOLERANCE) @cmyk.yellow = 20 assert_in_delta(0.2, @cmyk.y, Color::COLOR_TOLERANCE) @cmyk.y = 2.0 assert_in_delta(100, @cmyk.yellow, Color::COLOR_TOLERANCE) @cmyk.y = -1.0 assert_in_delta(0.0, @cmyk.y, Color::COLOR_TOLERANCE) end def test_black assert_in_delta(0.4, @cmyk.k, Color::COLOR_TOLERANCE) assert_in_delta(40, @cmyk.black, Color::COLOR_TOLERANCE) @cmyk.black = 20 assert_in_delta(0.2, @cmyk.k, Color::COLOR_TOLERANCE) @cmyk.k = 2.0 assert_in_delta(100, @cmyk.black, Color::COLOR_TOLERANCE) @cmyk.k = -1.0 assert_in_delta(0.0, @cmyk.k, Color::COLOR_TOLERANCE) end def test_pdf assert_equal("0.100 0.200 0.300 0.400 k", @cmyk.pdf_fill) assert_equal("0.100 0.200 0.300 0.400 K", @cmyk.pdf_stroke) end def test_to_cmyk assert(@cmyk.to_cmyk == @cmyk) end def test_to_grayscale gs = @cmyk.to_grayscale assert_kind_of(Color::GrayScale, gs) assert_in_delta(0.4185, gs.g, Color::COLOR_TOLERANCE) assert_kind_of(Color::GreyScale, @cmyk.to_greyscale) end def test_to_hsl hsl = @cmyk.to_hsl assert_kind_of(Color::HSL, hsl) assert_in_delta(0.48, hsl.l, Color::COLOR_TOLERANCE) assert_in_delta(0.125, hsl.s, Color::COLOR_TOLERANCE) assert_in_delta(0.08333, hsl.h, Color::COLOR_TOLERANCE) assert_equal("hsl(30.00, 12.50%, 48.00%)", @cmyk.css_hsl) assert_equal("hsla(30.00, 12.50%, 48.00%, 1.00)", @cmyk.css_hsla) end def test_to_rgb rgb = @cmyk.to_rgb(true) assert_kind_of(Color::RGB, rgb) assert_in_delta(0.5, rgb.r, Color::COLOR_TOLERANCE) assert_in_delta(0.4, rgb.g, Color::COLOR_TOLERANCE) assert_in_delta(0.3, rgb.b, Color::COLOR_TOLERANCE) rgb = @cmyk.to_rgb assert_kind_of(Color::RGB, rgb) assert_in_delta(0.54, rgb.r, Color::COLOR_TOLERANCE) assert_in_delta(0.48, rgb.g, Color::COLOR_TOLERANCE) assert_in_delta(0.42, rgb.b, Color::COLOR_TOLERANCE) assert_equal("#8a7a6b", @cmyk.html) assert_equal("rgb(54.00%, 48.00%, 42.00%)", @cmyk.css_rgb) assert_equal("rgba(54.00%, 48.00%, 42.00%, 1.00)", @cmyk.css_rgba) end def test_inspect assert_equal("CMYK [10.00%, 20.00%, 30.00%, 40.00%]", @cmyk.inspect) end def test_to_yiq yiq = @cmyk.to_yiq assert_kind_of(Color::YIQ, yiq) assert_in_delta(0.4911, yiq.y, Color::COLOR_TOLERANCE) assert_in_delta(0.05502, yiq.i, Color::COLOR_TOLERANCE) assert_in_delta(0.0, yiq.q, Color::COLOR_TOLERANCE) end end end