diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-02-08 15:32:04 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-02-08 15:32:04 +0100 |
| commit | ec726488105714ac6c55d910e2116785cc479e5b (patch) | |
| tree | a321eb2a6142a46c698b0a17ad9c690dfd855621 /core | |
| parent | 6aaf3a336cdfae069bfd07103390a5378a8815a9 (diff) | |
| download | vis-ec726488105714ac6c55d910e2116785cc479e5b.tar.gz vis-ec726488105714ac6c55d910e2116785cc479e5b.tar.xz | |
test/core: adjust mark related tests
Diffstat (limited to 'core')
| -rw-r--r-- | core/text.c | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/core/text.c b/core/text.c index 51225dc..5a8c001 100644 --- a/core/text.c +++ b/core/text.c @@ -7,6 +7,7 @@ #include "tap.h" #include "text.h" #include "text-util.h" +#include "util.h" #ifndef BUFSIZ #define BUFSIZ 1024 @@ -168,28 +169,35 @@ int main(int argc, char *argv[]) { ok(text_mark_get(txt, text_mark_set(txt, -1)) == EPOS, "Mark invalid 1"); ok(text_mark_get(txt, text_mark_set(txt, text_size(txt)+1)) == EPOS, "Mark invalid 2"); - Mark bof = text_mark_set(txt, 0); - ok(text_mark_get(txt, bof) == 0, "Mark at beginning of file"); - size_t pos = 3; - Mark mof = text_mark_set(txt, pos); - ok(text_mark_get(txt, mof) == pos, "Mark in the middle"); - Mark eof = text_mark_set(txt, text_size(txt)); - ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end of file"); + const char *chunk = "new content"; - size_t newpos = pos+strlen(chunk); - ok(insert(txt, pos-1, chunk), "Insert before mark"); - ok(text_mark_get(txt, bof) == 0, "Mark at beginning adjusted 1"); - ok(text_mark_get(txt, mof) == newpos, "Mark in the middle adjusted 1"); - ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end adjusted 1"); - ok(insert(txt, newpos+1, chunk), "Insert after mark"); - ok(text_mark_get(txt, bof) == 0, "Mark at beginning adjusted 2"); - ok(text_mark_get(txt, mof) == newpos, "Mark in the middle adjusted 2"); - ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end adjusted 2"); + const size_t delta = strlen(chunk); + size_t positions[] = { 0, 1, text_size(txt)/2, text_size(txt)-1 }; text_snapshot(txt); - ok(text_delete(txt, newpos, 1), "Deleting mark"); - ok(text_mark_get(txt, mof) == EPOS, "Mark in the middle deleted"); - text_undo(txt); - ok(text_mark_get(txt, mof) == newpos, "Mark restored"); + for (size_t i = 0; i < LENGTH(positions); i++) { + size_t pos = positions[i]; + size_t newpos = pos+delta; + Mark bof = text_mark_set(txt, 0); + ok(text_mark_get(txt, bof) == 0, "Mark at beginning of file"); + Mark mof = text_mark_set(txt, pos); + ok(text_mark_get(txt, mof) == pos, "Mark in the middle"); + Mark eof = text_mark_set(txt, text_size(txt)); + ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end of file"); + ok(insert(txt, pos, chunk), "Insert before mark"); + ok(text_mark_get(txt, bof) == ((pos == 0) ? delta : 0), "Mark at beginning adjusted 1"); + ok(text_mark_get(txt, mof) == pos+delta, "Mark in the middle adjusted 1"); + ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end adjusted 1"); + ok(insert(txt, pos+delta+1, chunk), "Insert after mark"); + ok(text_mark_get(txt, bof) == ((pos == 0) ? delta : 0), "Mark at beginning adjusted 2"); + ok(text_mark_get(txt, mof) == pos+delta, "Mark in the middle adjusted 2"); + ok(text_mark_get(txt, eof) == text_size(txt), "Mark at end adjusted 2"); + text_snapshot(txt); + ok(text_delete(txt, pos+delta, 1), "Deleting mark"); + ok(text_mark_get(txt, mof) == EPOS, "Mark in the middle deleted"); + text_undo(txt); + ok(text_mark_get(txt, mof) == pos+delta, "Mark restored"); + text_undo(txt); + } text_free(txt); return exit_status(); |
