* BugFix: LibEditText_CursorMove_MoveRight() ( CursorDown when cursor is position limit-right )
* Implementing: Debug-Print Cursor Info
test_libedittext_linectrl.o \
test_libedittext_lineedit.o \
test_libedittext_cursorinfo.o \
+ test_libedittext_cursorapi.o \
test_libedittext_system.o
TEST_HEADER = \
test_libedittext.h
$(CC) -c -o test_libedittext_cursorinfo.o \
$(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
test_libedittext_cursorinfo.c
+test_libedittext_cursorapi.o: test_libedittext_cursorapi.c $(HEADER) $(TEST_HEADER)
+ $(CC) -c -o test_libedittext_cursorapi.o \
+ $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
+ test_libedittext_cursorapi.c
$(TEST_TARGET): $(TEST_OBJS) $(OBJS) $(TARGET) $(LIBRARY)
$(CC) -o $(TEST_TARGET) $(FLAGS_DEBUG) $(OBJS) $(TEST_OBJS) $(TARGET) \
LibEditText_CursorMove_MoveRight(
LibEditText_TextInfo *p_tinfo,
LibEditText_Cursor *p_cursor,
- DWord dw_len )
+ DWord dw_size )
{
+ DWord dw_len;
LibEditText_LineInfo *p_line;
assert( NULL != p_tinfo );
p_line = LINFO(p_tinfo, p_cursor->dw_lineid);
assert( NULL != p_line );
- p_cursor->dw_pos
- = ((p_cursor->dw_pos + dw_len + 1 < p_line->dw_strlen)
- ? (p_cursor->dw_pos + dw_len) : (p_line->dw_strlen - 1));
+ while( 0 < dw_size ) {
+ dw_len = p_line->dw_strlen - p_cursor->dw_pos;
+ if( dw_len <= dw_size ) {
+ if( p_cursor->dw_line + 1 == p_tinfo->dw_maxline ) {
+ p_cursor->dw_pos = ((0 < p_line->dw_strlen) ? (p_line->dw_strlen - 1) : 0 );
+ break;
+ }
+ else {
+ LibEditText_CursorMove_MoveDown( p_tinfo, p_cursor, 1 );
+ p_cursor->dw_pos = 0;
+ dw_size -= dw_len;
+ p_line = LINFO(p_tinfo, p_cursor->dw_lineid);
+ }
+ }
+ else {
+ p_cursor->dw_pos += dw_size;
+ dw_size = 0;
+ }
+ }
return 0x00;
}
LibEditText_CursorMove_MoveLeft(
LibEditText_TextInfo *p_tinfo,
LibEditText_Cursor *p_cursor,
- DWord dw_len )
+ DWord dw_size )
{
+ DWord dw_len;
+ LibEditText_LineInfo *p_line;
+
assert( NULL != p_tinfo );
assert( NULL != p_cursor );
+
+ while( 0 < dw_size ) {
+ dw_len = p_cursor->dw_pos;
- p_cursor->dw_pos
- = ((p_cursor->dw_pos >= dw_len) ? (p_cursor->dw_pos - dw_len) : 0);
+ if( dw_len < dw_size ) {
+ if( 0 == p_cursor->dw_line ) {
+ p_cursor->dw_pos = 0;
+ break;
+ }
+
+ LibEditText_CursorMove_MoveUp( p_tinfo, p_cursor, 1 );
+ dw_size -= (dw_len + 1);
+ p_line = LINFO(p_tinfo, p_cursor->dw_lineid);
+ assert( NULL != p_line );
+ assert( 0 < p_line->dw_strlen );
+ p_cursor->dw_pos = p_line->dw_strlen - 1;
+ }
+ else {
+ p_cursor->dw_pos -= dw_size;
+ dw_size = 0;
+ }
+ }
return 0x00;
}
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
int
+ LibEditText_Debug_Cursor(
+ LibEditText_TextInfo *p_tinfo,
+ Byte b_putflag )
+{
+ DWord dw_cnt;
+ LibEditText_Cursor *p_cursor;
+
+ if( 0x00 != b_putflag ) {
+ puts("[5] Cursor Info ---2----+----3----+----4----+----5----+----6----+----7----+----8");
+ }
+
+ for( dw_cnt = 0; dw_cnt < DRD64_LIBEDITTEXT_DEFAULT_MAX_CURSORS; dw_cnt++ ) {
+ p_cursor = &(p_tinfo->t_cursor[ dw_cnt ]);
+
+ if( 0 == p_cursor->dw_rangelines ) {
+ if( 0x00 != b_putflag )
+ { printf( " Cursor %u: Not Alloced.\n", dw_cnt ); }
+ continue;
+ }
+
+ if( 0x00 != b_putflag ) {
+ printf( " Cursor %u: (RangeLines: %u, Updates: %s) \n",
+ dw_cnt, p_cursor->dw_rangelines,
+ ((0x00 != p_cursor->b_update) ? "YES" : "NO") );
+
+ if( 1 < p_cursor->dw_rangelines ) {
+ printf(" Start : [%5u] (ID:%u)\n",
+ p_cursor->dw_start_line, p_cursor->dw_start_lineid );
+ }
+
+ printf(" Center: [%5u:%3u] (ID:%u)\n",
+ p_cursor->dw_line, p_cursor->dw_pos, p_cursor->dw_lineid );
+
+ if( 1 < p_cursor->dw_rangelines ) {
+ printf(" End : [%5u] (ID:%u)\n",
+ p_cursor->dw_end_line, p_cursor->dw_end_lineid );
+ }
+ }
+
+
+
+ }
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
LibEditText_Debug_EmptyChain(
LibEditText_TextInfo *p_tinfo,
Byte b_putflag )
if( 0x02 > b_putlevel ) { return 0x00; }
- puts("[5] Text Data *********** ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8");
+ puts("[6] Text Data *********** ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8");
p_before = NULL;
p_line = LINFO(p_tinfo, p_tinfo->dw_line_start);
}
i_result = LibEditText_Debug_SortChain( p_tinfo, b_putflag );
- if( 0x00 != i_result ) { return -0x03; }
+ if( 0x00 != i_result ) { return -0x3000 + i_result; }
i_result = LibEditText_Debug_EmptyChain( p_tinfo, b_putflag );
- if( 0x00 != i_result ) { return -0x04; }
+ if( 0x00 != i_result ) { return -0x4000 + i_result; }
i_result = LibEditText_Debug_DebugSection( p_tinfo, b_putflag );
if( 0x00 != i_result ) { return -0x5000 + i_result; }
- i_result = LibEditText_Debug_DumpTextData( p_tinfo, b_putflag );
+ i_result = LibEditText_Debug_Cursor( p_tinfo, b_putflag );
if( 0x00 != i_result ) { return -0x6000 + i_result; }
+ i_result = LibEditText_Debug_DumpTextData( p_tinfo, b_putflag );
+ if( 0x00 != i_result ) { return -0x7000 + i_result; }
+
return 0x00;
}
Test_LibEditText_LineCtrl();
Test_LibEditText_LineEdit();
Test_LibEditText_CursorInfo();
+ Test_LibEditText_CursorAPI();
CU_basic_run_tests();
CU_cleanup_registry();
#endif
DRD64_TEST_LIBEDITTEXT_CURSORINFO_EXTERN int Test_LibEditText_CursorInfo( void );
+/*---------------------------------------------------------------------*/
+#ifdef DRD64_SRC_TEST_LIBEDITTEXT_CURSORAPI
+ #define DRD64_TEST_LIBEDITTEXT_CURSORAPI_EXTERN
+#else
+ #define DRD64_TEST_LIBEDITTEXT_CURSORAPI_EXTERN extern
+#endif
+DRD64_TEST_LIBEDITTEXT_CURSORAPI_EXTERN int Test_LibEditText_CursorAPI( void );
+
#endif /* DRD64_HEADER_XXX */
i_curid = LibEditText_AllocCursor( i_tinfoid, 1 );
CU_ASSERT( 0x00 <= i_curid );
+ i_result = LibEditText_Debug_DebugTextInfo( i_tinfoid, 0x01, "InitFreeCursor (Init) - test 00-001");
+ CU_ASSERT( 0x00 == i_result );
+
i_result = LibEditText_FreeCursor( i_tinfoid, i_curid );
CU_ASSERT( 0x00 == i_result );
+ i_result = LibEditText_Debug_DebugTextInfo( i_tinfoid, 0x01, "InitFreeCursor (Free)- test 00-001");
+ CU_ASSERT( 0x00 == i_result );
+
i_result = LibEditText_Term();
CU_ASSERT( 0x00 == i_result );
i_curid[4] = LibEditText_AllocCursor( i_tinfoid, 5 );
CU_ASSERT( 0x00 > i_curid[4] );
+ i_result = LibEditText_Debug_DebugTextInfo( i_tinfoid, 0x01, "InitFreeCursor (Init) - test 00-002");
+ CU_ASSERT( 0x00 == i_result );
+
+
i_result = LibEditText_FreeCursor( i_tinfoid, i_curid[3] );
CU_ASSERT( 0x00 == i_result );
i_result = LibEditText_FreeCursor( i_tinfoid, i_curid[2] );
i_result = LibEditText_FreeCursor( i_tinfoid, i_curid[0] );
CU_ASSERT( 0x00 == i_result );
+ i_result = LibEditText_Debug_DebugTextInfo( i_tinfoid, 0x01, "InitFreeCursor (Free)- test 00-002");
+ CU_ASSERT( 0x00 == i_result );
+
i_result = LibEditText_Term();
CU_ASSERT( 0x00 == i_result );
CU_ASSERT( INVALID_LINE != dw_line );
i_result = LibEditText_Debug_DebugTextInfo(
- i_tinfoid, DEBUG_TEXTINFO_OUTPUT, "LineCtrl_PushLine 00-001" );
+ i_tinfoid, /* DEBUG_TEXTINFO_OUTPUT */ 0x01, "LineCtrl_PushLine 00-001" );
CU_ASSERT( 0x00 == i_result );
i_result = LibEditText_Term();
CU_ASSERT( INVALID_LINE != dw_line );
i_result = LibEditText_Debug_DebugTextInfo(
- i_tinfoid, DEBUG_TEXTINFO_OUTPUT, "LineCtrl_AddLine 00-001" );
+ i_tinfoid, /* DEBUG_TEXTINFO_OUTPUT */ 0x01, "LineCtrl_AddLine 00-001" );
CU_ASSERT( 0x00 == i_result );
i_result = LibEditText_Term();