Files
cargdev-cyberpunk/test/test_colors.lua
Carlos Gutierrez 555718c010 feat(v1.1.0): major refactor with modular architecture and plugin support
- Add config.lua for comprehensive configuration options
  (transparent, italic_comments, bold_keywords, bold_functions, bold_types, terminal_colors)
- Add highlights.lua with 500+ highlight groups for 30+ plugins
  (Telescope, NvimTree, Neo-tree, GitSigns, nvim-cmp, Lazy.nvim, Mason, etc.)
- Add colors/ directory for :colorscheme command support
- Add terminal colors (16-color palette for :terminal)
- Add test suite (test/test_colors.lua)
- Add development tools (selene.toml, stylua.toml, vim.toml)
- Add CHANGELOG.md following Keep a Changelog format

- Fix colors.lua not being used by init.lua
- Fix setup(opts) not applying configuration options
- Fix README referencing non-existent files

- Update documentation with accurate file structure and API docs
2026-01-10 22:13:00 -05:00

175 lines
4.9 KiB
Lua

-- Test file for CargDev-Cyberpunk colorscheme
-- Run with: nvim --headless -c "lua dofile('test/test_colors.lua')"
local function test_colors()
local ok, colors = pcall(require, "cargdev-cyberpunk.colors")
if not ok then
print("FAIL: Could not load colors module")
print(colors)
return false
end
local palette = colors.palette
local tests_passed = 0
local tests_failed = 0
-- Test palette structure
local required_categories = { "bg", "fg", "syntax", "special", "terminal" }
for _, category in ipairs(required_categories) do
if palette[category] then
tests_passed = tests_passed + 1
print(string.format("PASS: palette.%s exists", category))
else
tests_failed = tests_failed + 1
print(string.format("FAIL: palette.%s is missing", category))
end
end
-- Test color format (should be hex colors)
local function is_valid_hex(color)
return type(color) == "string" and color:match("^#%x%x%x%x%x%x$") ~= nil
end
for category, values in pairs(palette) do
for key, value in pairs(values) do
if is_valid_hex(value) then
tests_passed = tests_passed + 1
else
tests_failed = tests_failed + 1
print(string.format("FAIL: Invalid color format for %s.%s: %s", category, key, tostring(value)))
end
end
end
print(string.format("\nResults: %d passed, %d failed", tests_passed, tests_failed))
return tests_failed == 0
end
local function test_config()
local ok, config = pcall(require, "cargdev-cyberpunk.config")
if not ok then
print("FAIL: Could not load config module")
print(config)
return false
end
config.setup({})
local cfg = config.get()
local tests_passed = 0
local tests_failed = 0
-- Test default config values
local expected_defaults = {
transparent = false,
italic_comments = true,
bold_keywords = true,
bold_functions = true,
bold_types = true,
terminal_colors = true,
}
for key, expected in pairs(expected_defaults) do
if cfg[key] == expected then
tests_passed = tests_passed + 1
print(string.format("PASS: config.%s = %s", key, tostring(expected)))
else
tests_failed = tests_failed + 1
print(string.format("FAIL: config.%s expected %s, got %s", key, tostring(expected), tostring(cfg[key])))
end
end
print(string.format("\nResults: %d passed, %d failed", tests_passed, tests_failed))
return tests_failed == 0
end
local function test_highlights()
local ok, highlights = pcall(require, "cargdev-cyberpunk.highlights")
if not ok then
print("FAIL: Could not load highlights module")
print(highlights)
return false
end
local colors = require("cargdev-cyberpunk.colors")
local config = require("cargdev-cyberpunk.config")
config.setup({})
local groups = highlights.get_groups(colors.palette, config.get())
local tests_passed = 0
local tests_failed = 0
-- Test essential highlight groups exist
local essential_groups = {
"Normal", "NormalFloat", "Comment", "String", "Function",
"Keyword", "Type", "DiagnosticError", "DiagnosticWarn",
"TelescopeBorder", "NvimTreeNormal", "GitSignsAdd",
}
for _, group in ipairs(essential_groups) do
if groups[group] then
tests_passed = tests_passed + 1
print(string.format("PASS: Highlight group '%s' exists", group))
else
tests_failed = tests_failed + 1
print(string.format("FAIL: Highlight group '%s' is missing", group))
end
end
print(string.format("\nResults: %d passed, %d failed", tests_passed, tests_failed))
return tests_failed == 0
end
local function test_init()
local ok, cyberpunk = pcall(require, "cargdev-cyberpunk")
if not ok then
print("FAIL: Could not load main module")
print(cyberpunk)
return false
end
local tests_passed = 0
local tests_failed = 0
-- Test module functions exist
local expected_functions = { "setup", "load", "apply_highlights", "apply_terminal_colors", "get_colors" }
for _, func_name in ipairs(expected_functions) do
if type(cyberpunk[func_name]) == "function" then
tests_passed = tests_passed + 1
print(string.format("PASS: Function '%s' exists", func_name))
else
tests_failed = tests_failed + 1
print(string.format("FAIL: Function '%s' is missing or not a function", func_name))
end
end
print(string.format("\nResults: %d passed, %d failed", tests_passed, tests_failed))
return tests_failed == 0
end
-- Run all tests
print("=== Testing CargDev-Cyberpunk Colorscheme ===\n")
print("--- Testing Colors Module ---")
local colors_ok = test_colors()
print("\n--- Testing Config Module ---")
local config_ok = test_config()
print("\n--- Testing Highlights Module ---")
local highlights_ok = test_highlights()
print("\n--- Testing Main Module ---")
local init_ok = test_init()
print("\n=== Test Summary ===")
if colors_ok and config_ok and highlights_ok and init_ok then
print("All tests passed!")
vim.cmd("qa!")
else
print("Some tests failed!")
vim.cmd("cq!")
end