]> git.mdlowis.com Git - projs/tide.git/commitdiff
Added tests for buf.c
authorMichael D. Lowis <mike.lowis@gentex.com>
Fri, 28 Oct 2016 20:23:28 +0000 (16:23 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Fri, 28 Oct 2016 20:23:28 +0000 (16:23 -0400)
.gitignore
Makefile
buf.c
tests/buf.c

index 1bd9b144d2eb0f0ac14c76e354c4843aaeaee531..371b26130559568246955315a28b613c96a5c0ee 100644 (file)
@@ -35,3 +35,6 @@ edit
 unittests
 project.vim
 tags
+*.gcno
+*.gcda
+*.gcov
index 0c79a352da9ddc7327aec0e50ee5c222611ab3b8..d51b015818ed17d92a8542bb54494f58c07ecea3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
-#GCOV     = --coverage
+PREFIX   = /usr/local
+GCOV     = --coverage
 LDFLAGS  = $(GCOV) -L/opt/X11/lib -lX11 -lXft -lfontconfig
 CFLAGS   = $(GCOV) -Os --std=gnu99 -Wall -Wextra -I. -I/opt/X11/include -I/opt/local/include/freetype2 -I/usr/include/freetype2
 OBJS     = buf.o screen.o utf8.o keyboard.o mouse.o charset.o utils.o
@@ -18,6 +19,8 @@ unittests: $(TESTOBJS) $(OBJS)
 coverage: test
        gcov -fabc $(OBJS) > coverage.txt
 
+install:
+       cp
 
 clean:
        $(RM) edit unittests xedit.o $(OBJS) $(TESTOBJS) coverage.txt
diff --git a/buf.c b/buf.c
index f145b6010a2ea690c4a5ecdfee31cb376a4bf523..fabe8109271fe188817bae97944c8c536946512c 100644 (file)
--- a/buf.c
+++ b/buf.c
@@ -248,7 +248,7 @@ unsigned buf_rscan(Buf* buf, unsigned off, Rune r) {
     return off;
 }
 
-int range_match(Buf* buf, unsigned dbeg, unsigned dend, unsigned mbeg, unsigned mend) {
+static int range_match(Buf* buf, unsigned dbeg, unsigned dend, unsigned mbeg, unsigned mend) {
     unsigned n1 = dend-dbeg, n2 = mend-mbeg;
     if (n1 != n2) return n1-n2;
     for (; n1; n1--, dbeg++, mbeg++) {
index ccd1f1c0b6e835245e9181ea5bd62d761d2cb847..aa3aa74084ec39d087442a8111a3c7e518550845 100644 (file)
@@ -11,6 +11,7 @@ static void buf_clr(Buf* buf) {
 static void set_buffer_text(char* str) {
     int i = 0;
     buf_clr(&TestBuf);
+    TestBuf.crlf = 1;
     for (Rune* curr = TestBuf.bufstart; curr < TestBuf.bufend; curr++)
         *curr = '-';
     TestBuf.locked = false;
@@ -27,137 +28,243 @@ static bool buf_text_eq(char* str) {
 }
 
 TEST_SUITE(BufferTests) {
+    /* Initializing
+     *************************************************************************/
+    /* Loading
+     *************************************************************************/
+    /* Saving
+     *************************************************************************/
+    /* Resizing
+     *************************************************************************/
     /* Insertions
      *************************************************************************/
-    TEST(buf_ins should insert at 0 in empty buf) {
-        buf_clr(&TestBuf);
-        buf_ins(&TestBuf, 0, 'a');
-        CHECK(buf_text_eq("a"));
-    }
+    /* Deletions
+     *************************************************************************/
+    /* Undo/Redo
+     *************************************************************************/
+    /* Locking
+     *************************************************************************/
 
-    TEST(buf_ins should insert at 0) {
-        buf_clr(&TestBuf);
-        buf_ins(&TestBuf, 0, 'b');
-        buf_ins(&TestBuf, 0, 'a');
-        CHECK(buf_text_eq("ab"));
+    /* Accessors
+     *************************************************************************/
+    // buf_get
+    TEST(buf_get should return newline for indexes outside the buffer) {
+        set_buffer_text("test");
+        CHECK('\n' == buf_get(&TestBuf, 4));
     }
 
-    TEST(buf_ins should insert at 1) {
-        buf_clr(&TestBuf);
-        buf_ins(&TestBuf, 0, 'a');
+    TEST(buf_get should indexed character before the gap) {
+        set_buffer_text("ac");
         buf_ins(&TestBuf, 1, 'b');
-        CHECK(buf_text_eq("ab"));
+        CHECK('a' == buf_get(&TestBuf, 0));
     }
 
-    TEST(buf_ins should insert at 1) {
-        buf_clr(&TestBuf);
-        buf_ins(&TestBuf, 0, 'a');
-        buf_ins(&TestBuf, 1, 'c');
+    TEST(buf_get should indexed character after the gap) {
+        set_buffer_text("ac");
         buf_ins(&TestBuf, 1, 'b');
-        CHECK(buf_text_eq("abc"));
+        CHECK('c' == buf_get(&TestBuf, 2));
     }
 
-    TEST(buf_ins should sentence in larger text) {
-        set_buffer_text(
-            "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam elementum eros quis venenatis. "
-        );
+    TEST(buf_end should return the index just after the last rune in the buffer) {
+        set_buffer_text("abc");
+        CHECK(3 == buf_end(&TestBuf));
+    }
 
-        buf_ins(&TestBuf, 5, ' ');
-        buf_ins(&TestBuf, 6, 'a');
+    TEST(buf_iseol should return true if index points to a newline rune) {
+        set_buffer_text("abc\ncba");
+        CHECK(buf_iseol(&TestBuf, 3));
+    }
 
-        CHECK(buf_text_eq(
-            "Lorem a ipsum dolor sit amet, consectetur adipiscing elit. Aliquam elementum eros quis venenatis. "
-        ));
+    TEST(buf_iseol should return true if index points to a crlf rune) {
+        CHECK(!"Test causes an assertion in the syncgap function. no idea why");
+        set_buffer_text("abc\r\ncba");
+        CHECK(buf_iseol(&TestBuf, 0));
     }
 
-    /* Deletions
-     *************************************************************************/
+    TEST(buf_iseol should return false if index does not point to a newline rune) {
+        set_buffer_text("abc\ncba");
+        CHECK(!buf_iseol(&TestBuf, 2));
+    }
 
-    /* Beginning and End of line
+    /* Movements
      *************************************************************************/
-    TEST(buf_bol should move to first non newline character of line) {
-        set_buffer_text("\nabc\n");
-        CHECK(1 == buf_bol(&TestBuf, 3));
+    // Start of Line
+    TEST(buf_bol should return 0 if column 1 of first line) {
+        set_buffer_text("ab\ncd");
+        CHECK(0 == buf_bol(&TestBuf, 2));
     }
 
-    TEST(buf_bol should do nothing for blank line) {
-        set_buffer_text("\n\n");
-        CHECK(1 == buf_bol(&TestBuf, 1));
+    TEST(buf_bol should return 0 if column 2 of first line) {
+        set_buffer_text("ab\ncd");
+        CHECK(0 == buf_bol(&TestBuf, 1));
     }
 
-    TEST(buf_eol should move to last character of line) {
-        set_buffer_text("\nabc\n");
-        CHECK(4 == buf_eol(&TestBuf, 1));
+    TEST(buf_bol should return 0 if index points to newline) {
+        set_buffer_text("ab\ncd");
+        CHECK(0 == buf_bol(&TestBuf, 0));
     }
 
-    TEST(buf_eol should do nothing for blank line) {
-        set_buffer_text("\n\n");
-        CHECK(1 == buf_eol(&TestBuf, 1));
+    TEST(buf_bol should return 3 if column 1 of second line) {
+        set_buffer_text("ab\ncd");
+        CHECK(3 == buf_bol(&TestBuf, 3));
     }
 
-    /* Movement by Rune
-     *************************************************************************/
-    TEST(buf_byrune should do nothing for -1 at beginning of file)
-    {
-        set_buffer_text("abc\n");
-        CHECK(0 == buf_byrune(&TestBuf, 0, -1));
+    TEST(buf_bol should return 3 if column 2 of second line) {
+        set_buffer_text("ab\ncd");
+        CHECK(3 == buf_bol(&TestBuf, 4));
     }
 
-    TEST(buf_byrune should do nothing for -2 at beginning of file)
-    {
-        set_buffer_text("abc\n");
-        CHECK(0 == buf_byrune(&TestBuf, 0, -2));
+    TEST(buf_bol should return input if index is outside buffer) {
+        set_buffer_text("ab\ncd");
+        CHECK(6 == buf_bol(&TestBuf, 6));
     }
 
-    TEST(buf_byrune should move to just after last rune for +1 at end of file)
-    {
-        set_buffer_text("abc\n");
-        CHECK(4 == buf_byrune(&TestBuf, 3, 1));
-    }
+    // End of Line
+    // Start of Word
+    // End of Word
+    // Scan Left
+    // Scan Right
+    // By Rune
+    // By Line
+
+    /* Literal Find
+     *************************************************************************/
+    /* Cursor Column Tracking
+     *************************************************************************/
 
-    TEST(buf_byrune should move to just after last rune for +2 at end of file)
-    {
-        set_buffer_text("abc\n");
-        CHECK(4 == buf_byrune(&TestBuf, 3, 2));
-    }
 
-    //TEST(buf_byrune should skip newlines for -1)
+
+    ///* Insertions
+    // *************************************************************************/
+    //TEST(buf_ins should insert at 0 in empty buf) {
+    //    buf_clr(&TestBuf);
+    //    buf_ins(&TestBuf, 0, 'a');
+    //    CHECK(buf_text_eq("a"));
+    //}
+
+    //TEST(buf_ins should insert at 0) {
+    //    buf_clr(&TestBuf);
+    //    buf_ins(&TestBuf, 0, 'b');
+    //    buf_ins(&TestBuf, 0, 'a');
+    //    CHECK(buf_text_eq("ab"));
+    //}
+
+    //TEST(buf_ins should insert at 1) {
+    //    buf_clr(&TestBuf);
+    //    buf_ins(&TestBuf, 0, 'a');
+    //    buf_ins(&TestBuf, 1, 'b');
+    //    CHECK(buf_text_eq("ab"));
+    //}
+
+    //TEST(buf_ins should insert at 1) {
+    //    buf_clr(&TestBuf);
+    //    buf_ins(&TestBuf, 0, 'a');
+    //    buf_ins(&TestBuf, 1, 'c');
+    //    buf_ins(&TestBuf, 1, 'b');
+    //    CHECK(buf_text_eq("abc"));
+    //}
+
+    //TEST(buf_ins should sentence in larger text) {
+    //    set_buffer_text(
+    //        "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam elementum eros quis venenatis. "
+    //    );
+
+    //    buf_ins(&TestBuf, 5, ' ');
+    //    buf_ins(&TestBuf, 6, 'a');
+
+    //    CHECK(buf_text_eq(
+    //        "Lorem a ipsum dolor sit amet, consectetur adipiscing elit. Aliquam elementum eros quis venenatis. "
+    //    ));
+    //}
+
+    ///* Deletions
+    // *************************************************************************/
+
+    ///* Beginning and End of line
+    // *************************************************************************/
+    //TEST(buf_bol should move to first non newline character of line) {
+    //    set_buffer_text("\nabc\n");
+    //    CHECK(1 == buf_bol(&TestBuf, 3));
+    //}
+
+    //TEST(buf_bol should do nothing for blank line) {
+    //    set_buffer_text("\n\n");
+    //    CHECK(1 == buf_bol(&TestBuf, 1));
+    //}
+
+    //TEST(buf_eol should move to last character of line) {
+    //    set_buffer_text("\nabc\n");
+    //    CHECK(4 == buf_eol(&TestBuf, 1));
+    //}
+
+    //TEST(buf_eol should do nothing for blank line) {
+    //    set_buffer_text("\n\n");
+    //    CHECK(1 == buf_eol(&TestBuf, 1));
+    //}
+
+    ///* Movement by Rune
+    // *************************************************************************/
+    //TEST(buf_byrune should do nothing for -1 at beginning of file)
     //{
-    //    set_buffer_text("ab\ncd\n");
-    //    CHECK(1 == buf_byrune(&TestBuf, 3, -1));
+    //    set_buffer_text("abc\n");
+    //    CHECK(0 == buf_byrune(&TestBuf, 0, -1));
     //}
 
-    //TEST(buf_byrune should skip newlines for +1)
+    //TEST(buf_byrune should do nothing for -2 at beginning of file)
     //{
-    //    set_buffer_text("ab\ncd\n");
-    //    CHECK(3 == buf_byrune(&TestBuf, 1, 1));
+    //    set_buffer_text("abc\n");
+    //    CHECK(0 == buf_byrune(&TestBuf, 0, -2));
     //}
 
-    //TEST(buf_byrune should not skip blank lines for -1)
+    //TEST(buf_byrune should move to just after last rune for +1 at end of file)
     //{
-    //    set_buffer_text("ab\n\ncd\n");
-    //    CHECK(3 == buf_byrune(&TestBuf, 4, -1));
+    //    set_buffer_text("abc\n");
+    //    CHECK(4 == buf_byrune(&TestBuf, 3, 1));
     //}
 
-    //TEST(buf_byrune should not skip blank lines for +1)
+    //TEST(buf_byrune should move to just after last rune for +2 at end of file)
     //{
-    //    set_buffer_text("ab\n\ncd\n");
-    //    CHECK(3 == buf_byrune(&TestBuf, 1, 1));
+    //    set_buffer_text("abc\n");
+    //    CHECK(4 == buf_byrune(&TestBuf, 3, 2));
     //}
 
-    //TEST(buf_byrune should move from blank line to non-blank line for -1)
+    ////TEST(buf_byrune should skip newlines for -1)
+    ////{
+    ////    set_buffer_text("ab\ncd\n");
+    ////    CHECK(1 == buf_byrune(&TestBuf, 3, -1));
+    ////}
+
+    ////TEST(buf_byrune should skip newlines for +1)
+    ////{
+    ////    set_buffer_text("ab\ncd\n");
+    ////    CHECK(3 == buf_byrune(&TestBuf, 1, 1));
+    ////}
+
+    ////TEST(buf_byrune should not skip blank lines for -1)
+    ////{
+    ////    set_buffer_text("ab\n\ncd\n");
+    ////    CHECK(3 == buf_byrune(&TestBuf, 4, -1));
+    ////}
+
+    ////TEST(buf_byrune should not skip blank lines for +1)
+    ////{
+    ////    set_buffer_text("ab\n\ncd\n");
+    ////    CHECK(3 == buf_byrune(&TestBuf, 1, 1));
+    ////}
+
+    ////TEST(buf_byrune should move from blank line to non-blank line for -1)
+    ////{
+    ////    set_buffer_text("ab\n\ncd\n");
+    ////    CHECK(1 == buf_byrune(&TestBuf, 3, -1));
+    ////}
+
+    //TEST(buf_byrune should move from blank line to non-blank line for +1)
     //{
     //    set_buffer_text("ab\n\ncd\n");
-    //    CHECK(1 == buf_byrune(&TestBuf, 3, -1));
+    //    CHECK(4 == buf_byrune(&TestBuf, 3, 1));
     //}
 
-    TEST(buf_byrune should move from blank line to non-blank line for +1)
-    {
-        set_buffer_text("ab\n\ncd\n");
-        CHECK(4 == buf_byrune(&TestBuf, 3, 1));
-    }
-
-    /* Movement by Line
-     *************************************************************************/
+    ///* Movement by Line
+    // *************************************************************************/
 
 }