diff options
| author | Quey-Liang Kao <s101062801@m101.nthu.edu.tw> | 2017-08-29 17:00:18 +0800 |
|---|---|---|
| committer | Quey-Liang Kao <s101062801@m101.nthu.edu.tw> | 2017-08-29 17:00:18 +0800 |
| commit | a716a04c831e4fb23cdd558756d8f393e4ef8d73 (patch) | |
| tree | b770c518314b8495f7e220ece9da4a10c6639546 /todolist/parser_test.go | |
| parent | 34639c4285621177efb10b82ddb07cd0017af56a (diff) | |
Refactor previous commits
Rewrite the `ManipulateNotes` function into `HandleNotes`, which
routes the note sub-commands to calls of newly-written `Parse*Note`
functions. On successful parse, these functions return true, and
false otherwise.
Related tests are also refined.
Diffstat (limited to 'todolist/parser_test.go')
| -rw-r--r-- | todolist/parser_test.go | 72 |
1 files changed, 68 insertions, 4 deletions
diff --git a/todolist/parser_test.go b/todolist/parser_test.go index 2c4fd25..313ad9f 100644 --- a/todolist/parser_test.go +++ b/todolist/parser_test.go @@ -74,25 +74,89 @@ func TestParseContexts(t *testing.T) { } } -func TestParseNotes(t *testing.T) { +func TestParseAddNote(t *testing.T) { + parser := &Parser{} + todo := parser.ParseNewTodo("add write the test functions") + + b1 := parser.ParseAddNote(todo, "an 1 TestPasrseAddNote") + b2 := parser.ParseAddNote(todo, "an 1 TestPasrseDeleteNote") + b3 := parser.ParseAddNote(todo, "an 1 TestPasrseEditNote") + + if !b1 || !b2 || !b3 { + t.Error("Fail adding notes, expected 3 notes but", len(todo.Notes)) + } +} + +func TestParseDeleteNote(t *testing.T) { + parser := &Parser{} + todo := parser.ParseNewTodo("add buy notebook") + + todo.Notes = append(todo.Notes, "ASUStek") + todo.Notes = append(todo.Notes, "Apple") + todo.Notes = append(todo.Notes, "Dell") + todo.Notes = append(todo.Notes, "Acer") + + b1 := parser.ParseDeleteNote(todo, "dn 1 1") + b2 := parser.ParseDeleteNote(todo, "dn 1 1") + + if !b1 || !b2 { + t.Error("Fail deleting notes, expected 2 notes left but", len(todo.Notes)) + } + + if todo.Notes[0] != "ASUStek" || todo.Notes[1] != "Acer" { + t.Error("Fail deleting notes,", todo.Notes[0], "and", todo.Notes[1], "are left") + } +} + +func TestParseEditNote(t *testing.T) { + parser := &Parser{} + todo := parser.ParseNewTodo("add record the weather") + + todo.Notes = append(todo.Notes, "Aug 29 Wed") + todo.Notes = append(todo.Notes, "Cloudy") + todo.Notes = append(todo.Notes, "40°C") + todo.Notes = append(todo.Notes, "Tokyo") + + parser.ParseEditNote(todo, "en 1 0 Aug 29 Tue") + if todo.Notes[0] != "Aug 29 Tue" { + t.Error("Fail editing notes, note 0 should be \"Aug 29 Tue\" but got", todo.Notes[0]) + } + + parser.ParseEditNote(todo, "en 1 1 Sunny") + if todo.Notes[1] != "Sunny" { + t.Error("Fail editing notes, note 1 should be \"Sunny\" but got", todo.Notes[1]) + } + + parser.ParseEditNote(todo, "en 1 2 22°C") + if todo.Notes[2] != "22°C" { + t.Error("Fail editing notes, note 2 should be \"22°C\" but got", todo.Notes[2]) + } + + parser.ParseEditNote(todo, "en 1 3 Seoul") + if todo.Notes[3] != "Seoul" { + t.Error("Fail editing notes, note 3 should be \"Seoul\" but got", todo.Notes[3]) + } +} + +func TestHandleNotes(t *testing.T) { parser := &Parser{} todo := parser.ParseNewTodo("add search engine survey") - if parser.ParseNotes(todo, "an 1 www.google.com") != "add" { + if !parser.ParseAddNote(todo, "an 1 www.google.com") { t.Error("Expected Notes to be added") } if todo.Notes[0] != "www.google.com" { t.Error("Expected note 1 to be 'www.google.com' but got", todo.Notes[0]) } - if parser.ParseNotes(todo, "en 1 0 www.duckduckgo.com") != "edit" { + if !parser.ParseEditNote(todo, "en 1 0 www.duckduckgo.com") { t.Error("Expected Notes to be editted") } if todo.Notes[0] != "www.duckduckgo.com" { t.Error("Expected note 1 to be 'www.duckduckgo.com' but got", todo.Notes[0]) } - if parser.ParseNotes(todo, "dn 1 0") != "delete" { + if !parser.ParseDeleteNote(todo, "dn 1 0") { t.Error("Expected Notes to be deleted") } if len(todo.Notes) != 0 { |
