local activity = require "activity" local dates = require "activity.dates" local plain = require "activity.formats.plain" local Y2024 = [[ _0000000000000000000000000000000000000000000000000000 Mon 00000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000 Wed 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ Fri 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ ]] local Y2023 = [[ 00000000000000000000000000000000000000000000000000000 Mon 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ Wed 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ Fri 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ ]] local Y2020 = [[ _0000000000000000000000000000000000000000000000000000 Mon _0000000000000000000000000000000000000000000000000000 _0000000000000000000000000000000000000000000000000000 Wed 00000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000 Fri 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ ]] local ROLL = [[ 00000000000000000000000000000000000000000000000000000 Mon 00000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000 Wed 00000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000 Fri 0000000000000000000000000000000000000000000000000000_ 0000000000000000000000000000000000000000000000000000_ ]] describe("Generator", function() describe("shall generate correct table for year", function() local function lookup (year, day) return 0 end it("2024", function() assert.are.equal(Y2024, activity.generate_table(2024, lookup, plain)) end) it("2023", function() assert.are.equal(Y2023, activity.generate_table(2023, lookup, plain)) end) it("2020", function() assert.are.equal(Y2020, activity.generate_table(2020, lookup, plain)) end) end) describe("shall put activity into cells for", function() local function lookup (year, day) if day < 1 or dates.days_in(year) < day then return 0 end return 1 end it("regular years", function() assert.are.equal(Y2023:gsub("0", "1"), activity.generate_table(2023, lookup, plain)) end) it("leap years", function() assert.are.equal(Y2024:gsub("0", "1"), activity.generate_table(2024, lookup, plain)) end) end) it("shall support generating rolling table", function() local date = os.date("*t", os.time{year=2024, month=2, day=8}) assert.are.equal(ROLL, activity.generate_table("rolling", lookup, plain, date)) end) end)