eloop: move prefix to "ev_" instead of "kmscon_"
[platform/upstream/kmscon.git] / tests / test_buffer.c
index 0ad23f2..d136d5c 100644 (file)
 
 #include "console.h"
 #include "log.h"
+#include "unicode.h"
 
 /* print buffer with boundary */
 static void print_buf(struct kmscon_buffer *buf)
 {
        unsigned int width, height, x, y;
-       struct kmscon_char *ch;
-       int ret;
-       const char *c;
-
-       ret = kmscon_char_new(&ch);
-       if (ret) {
-               log_warning("Cannot allocate character\n");
-               return;
-       }
+       kmscon_symbol_t ch;
 
        width = kmscon_buffer_get_width(buf);
        height = kmscon_buffer_get_height(buf);
@@ -67,9 +60,8 @@ static void print_buf(struct kmscon_buffer *buf)
        for (y = 0; y < height; ++y) {
                printf("x");
                for (x = 0; x < width; ++x) {
-                       kmscon_buffer_read(buf, x, y, ch);
-                       c = kmscon_char_get_u8(ch);
-                       printf("%c", c ? *c : ' ');
+                       ch = kmscon_buffer_read(buf, x, y);
+                       printf("%c", ch ? ch : ' ');
                }
                printf("x\n");
        }
@@ -78,36 +70,90 @@ static void print_buf(struct kmscon_buffer *buf)
        for (x = 0; x < width; ++x)
                printf("x");
        printf("x\n");
-
-       kmscon_char_free(ch);
 }
 
 static void test1(struct kmscon_buffer *buf)
 {
-       int ret;
-       struct kmscon_char *ch;
+       kmscon_symbol_t ch;
 
        log_info("Test1:\n");
 
-       ret = kmscon_char_new_u8(&ch, "?", 1);
-       if (ret) {
-               log_err("Cannot create character\n");
-               return;
-       }
+       kmscon_buffer_set_margins(buf, 1, 1);
+       ch = kmscon_symbol_make('?');
 
        kmscon_buffer_write(buf, 0, 0, ch);
+       kmscon_buffer_write(buf, 2, 0, ch);
+       kmscon_buffer_write(buf, 4, 0, ch);
+       kmscon_buffer_write(buf, 1, 4, ch);
+       kmscon_buffer_write(buf, 3, 4, ch);
+       kmscon_buffer_write(buf, 5, 4, ch);
+       kmscon_buffer_write(buf, 9, 1, ch);
        kmscon_buffer_write(buf, 9, 2, ch);
-       kmscon_buffer_write(buf, 4, 4, ch);
-       kmscon_buffer_rotate(buf);
        print_buf(buf);
-       kmscon_buffer_resize(buf, 5, 3);
+       kmscon_buffer_resize(buf, 20, 3);
        print_buf(buf);
-       kmscon_buffer_resize(buf, 10, 5);
+       kmscon_buffer_resize(buf, 20, 5);
        print_buf(buf);
-       kmscon_buffer_rotate(buf);
+       kmscon_buffer_write(buf, 15, 1, ch);
        print_buf(buf);
+       kmscon_buffer_scroll_up(buf, 1);
+       print_buf(buf);
+}
+
+static void test2()
+{
+       struct kmscon_symbol_table *st;
+       int ret;
+       kmscon_symbol_t sym, sym2, sym3, sym4;
+       const uint32_t *str;
+       size_t len, i;
+
+       log_info("Test2:\n");
+
+       ret = kmscon_symbol_table_new(&st);
+       if (ret)
+               return;
+
+       sym = kmscon_symbol_make('a');
+       sym2 = kmscon_symbol_append(st, sym, '^');
+       sym3 = kmscon_symbol_append(st, sym2, '^');
+       sym4 = kmscon_symbol_append(st, sym, '^');
+
+       log_info("equality: %i %i %i\n", sym == sym2, sym2 == sym4,
+                                                               sym3 == sym2);
+
+       str = kmscon_symbol_get(st, &sym3, &len);
+
+       printf("sym3: ");
+       for (i = 0; i < len; ++i)
+               printf("%c", str[i]);
+       printf("\n");
+
+       kmscon_symbol_table_unref(st);
+}
+
+static void test3()
+{
+       int ret, i;
+       struct kmscon_utf8_mach *mach;
+       char buf[] = { 'a', 'b', 0xE2, 0x82, 0xAC };
+       uint32_t val;;
+
+       log_info("Test3:\n");
+
+       ret = kmscon_utf8_mach_new(&mach);
+       if (ret)
+               return;
+
+       for (i = 0; i < sizeof(buf); ++i) {
+               ret = kmscon_utf8_mach_feed(mach, buf[i]);
+               if (ret == KMSCON_UTF8_ACCEPT) {
+                       val = kmscon_utf8_mach_get(mach);
+                       printf("ret: %d 0x%X\n", ret, val);
+               }
+       }
 
-       kmscon_char_free(ch);
+       kmscon_utf8_mach_free(mach);
 }
 
 int main(int argc, char **argv)
@@ -120,8 +166,11 @@ int main(int argc, char **argv)
                log_err("Cannot create buffer object\n");
                goto err_out;
        }
+       kmscon_buffer_set_max_sb(buf, 128);
 
        test1(buf);
+       test2();
+       test3();
 
        kmscon_buffer_unref(buf);
 err_out: