From 41b1f0b5b9e873cf2bc11e5801ed2a481dcd146e Mon Sep 17 00:00:00 2001 From: David Briscoe Date: Sun, 27 Mar 2022 00:53:37 -0700 Subject: [PATCH] color: Add more tests --- modules/color.lua | 5 +++++ spec/color_spec.lua | 45 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/modules/color.lua b/modules/color.lua index 04ec3d1..148f5b3 100644 --- a/modules/color.lua +++ b/modules/color.lua @@ -174,6 +174,11 @@ function color.lighten(c, v) ) end +--- Interpolate between two colors. +-- @tparam color at start +-- @tparam color at end +-- @tparam number s in 0-1 progress between the two colors +-- @treturn color out function color.lerp(a, b, s) return a + s * (b - a) end diff --git a/spec/color_spec.lua b/spec/color_spec.lua index 5309ced..01f2769 100644 --- a/spec/color_spec.lua +++ b/spec/color_spec.lua @@ -116,6 +116,18 @@ describe("color:", function() assert.is.equal(r[1], 0) end) + it("multiply a color by a scalar", function() + local c = color(1, 1, 1, 1) + local r = c:multiply(0.04) + assert.is.equal(r[1], 0.04) + + r = c:multiply(0) + for i=1,3 do + assert.is.equal(0, r[i]) + end + assert.is.equal(1, r[4]) + end) + it("modify alpha", function() local c = color(1, 1, 1, 1) local r = c:alpha(0.1) @@ -127,12 +139,39 @@ describe("color:", function() assert.is.equal(r[4], 0.25) end) + it("invert", function() + local c = color(1, 0.6, 0.25, 1) + local r = c:invert() + assert_is_float_equal(r[1], 0) + assert_is_float_equal(r[2], 0.4) + assert_is_float_equal(r[3], 0.75) + assert_is_float_equal(r[4], 1) + r = c:invert() + :invert() + for i=1,4 do + assert.is.equal(c[i], r[i]) + end + end) + + it("lerp", function() + local a = color(1, 0.6, 0.25, 1) + local b = color(1, 0.8, 0.75, 0.5) + local r = a:lerp(b, 0.5) + assert_is_float_equal(r[1], 1) + assert_is_float_equal(r[2], 0.7) + assert_is_float_equal(r[3], 0.5) + assert_is_float_equal(r[4], 0.75) + local r_a = a:lerp(b, 0) + local r_b = a:lerp(b, 1) + for i=1,4 do + assert.is.equal(a[i], r_a[i]) + assert.is.equal(b[i], r_b[i]) + end + end) + end) --[[ -invert(c) -lerp(a, b, s) -multiply(c, v) gamma_to_linear(r, g, b, a) linear_to_gamma(r, g, b, a) to_string(a)