diff --git a/wtf/checklist_item.go b/wtf/checklist_item.go index 7903fb65..514ef714 100644 --- a/wtf/checklist_item.go +++ b/wtf/checklist_item.go @@ -1,10 +1,13 @@ package wtf +// ChecklistItem is a module for creating generic checklist implementations +// See 'Todo' for an implementation example type ChecklistItem struct { Checked bool Text string } +// CheckMark returns the string used to indicate a ChecklistItem is checked or unchecked func (item *ChecklistItem) CheckMark() string { if item.Checked { return Config.UString("wtf.mods.todo.checkedIcon", "x") @@ -13,6 +16,8 @@ func (item *ChecklistItem) CheckMark() string { } } +// Toggle changes the checked state of the ChecklistItem +// If checked, it is unchecked. If unchecked, it is checked func (item *ChecklistItem) Toggle() { item.Checked = !item.Checked } diff --git a/wtftests/checklist_item_test.go b/wtftests/checklist_item_test.go new file mode 100644 index 00000000..799f4f55 --- /dev/null +++ b/wtftests/checklist_item_test.go @@ -0,0 +1,42 @@ +package wtftests + +import ( + "testing" + + "github.com/olebedev/config" + . "github.com/senorprogrammer/wtf/wtf" + . "github.com/stretchr/testify/assert" +) + +/* -------------------- CheckMark -------------------- */ + +func TestCheckMark(t *testing.T) { + loadConfig() + + item := ChecklistItem{} + Equal(t, " ", item.CheckMark()) + + item = ChecklistItem{Checked: true} + Equal(t, "x", item.CheckMark()) +} + +/* -------------------- Toggle -------------------- */ + +func TestToggle(t *testing.T) { + loadConfig() + + item := ChecklistItem{} + Equal(t, false, item.Checked) + + item.Toggle() + Equal(t, true, item.Checked) + + item.Toggle() + Equal(t, false, item.Checked) +} + +/* -------------------- helpers -------------------- */ + +func loadConfig() { + Config, _ = config.ParseYamlFile("../_sample_configs/simple_config.yml") +}