Unit tests update
This commit is contained in:
parent
67bc999513
commit
75e7fb05c2
|
@ -3,7 +3,7 @@
|
||||||
* *
|
* *
|
||||||
* This file is part of the Final Cut widget toolkit *
|
* This file is part of the Final Cut widget toolkit *
|
||||||
* *
|
* *
|
||||||
* Copyright 2015-2017 Markus Gans *
|
* Copyright 2015-2018 Markus Gans *
|
||||||
* *
|
* *
|
||||||
* The Final Cut is free software; you can redistribute it and/or *
|
* The Final Cut is free software; you can redistribute it and/or *
|
||||||
* modify it under the terms of the GNU Lesser General Public License *
|
* modify it under the terms of the GNU Lesser General Public License *
|
||||||
|
@ -27,6 +27,9 @@
|
||||||
#error "Only <final/final.h> can be included directly."
|
#error "Only <final/final.h> can be included directly."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Typecast to c-string
|
||||||
|
#define C_STR const_cast<char*>
|
||||||
|
|
||||||
// ASCII sequences
|
// ASCII sequences
|
||||||
#define ESC "\033" // Escape
|
#define ESC "\033" // Escape
|
||||||
#define CSI ESC "[" // Control sequence introducer (7-bit)
|
#define CSI ESC "[" // Control sequence introducer (7-bit)
|
||||||
|
|
|
@ -121,6 +121,9 @@ class FOptiAttr
|
||||||
friend bool operator == (const char_data&, const char_data&);
|
friend bool operator == (const char_data&, const char_data&);
|
||||||
friend bool operator != (const char_data&, const char_data&);
|
friend bool operator != (const char_data&, const char_data&);
|
||||||
|
|
||||||
|
// Accessors
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
// Mutators
|
// Mutators
|
||||||
void setMaxColor (const int&);
|
void setMaxColor (const int&);
|
||||||
void setNoColorVideo (int);
|
void setNoColorVideo (int);
|
||||||
|
@ -357,6 +360,10 @@ inline bool operator != ( const FOptiAttr::char_data& lhs,
|
||||||
const FOptiAttr::char_data& rhs )
|
const FOptiAttr::char_data& rhs )
|
||||||
{ return ! ( lhs == rhs ); }
|
{ return ! ( lhs == rhs ); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FOptiAttr::getClassName() const
|
||||||
|
{ return "FOptiAttr"; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FOptiAttr::setMaxColor (const int& c)
|
inline void FOptiAttr::setMaxColor (const int& c)
|
||||||
{ max_color = c; }
|
{ max_color = c; }
|
||||||
|
|
|
@ -80,6 +80,9 @@ class FOptiMove
|
||||||
// Destructor
|
// Destructor
|
||||||
~FOptiMove();
|
~FOptiMove();
|
||||||
|
|
||||||
|
// Accessors
|
||||||
|
const char* getClassName() const;
|
||||||
|
|
||||||
// Mutators
|
// Mutators
|
||||||
void setBaudRate (int);
|
void setBaudRate (int);
|
||||||
void setTabStop (int);
|
void setTabStop (int);
|
||||||
|
@ -108,6 +111,7 @@ class FOptiMove
|
||||||
void set_eat_newline_glitch (const bool&);
|
void set_eat_newline_glitch (const bool&);
|
||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
|
void check_boundaries (int&, int&, int&, int&);
|
||||||
char* moveCursor (int, int, int, int);
|
char* moveCursor (int, int, int, int);
|
||||||
void printDurations();
|
void printDurations();
|
||||||
|
|
||||||
|
@ -190,6 +194,10 @@ class FOptiMove
|
||||||
|
|
||||||
|
|
||||||
// FOptiMove inline functions
|
// FOptiMove inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FOptiMove::getClassName() const
|
||||||
|
{ return "FOptiMove"; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FOptiMove::set_auto_left_margin (const bool& bcap)
|
inline void FOptiMove::set_auto_left_margin (const bool& bcap)
|
||||||
{ automatic_left_margin = bcap; }
|
{ automatic_left_margin = bcap; }
|
||||||
|
|
|
@ -51,9 +51,6 @@
|
||||||
#error "Only <final/final.h> can be included directly."
|
#error "Only <final/final.h> can be included directly."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Typecast to c-string
|
|
||||||
#define C_STR const_cast<char*>
|
|
||||||
|
|
||||||
#include "final/fconfig.h"
|
#include "final/fconfig.h"
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
#include "final/fc.h"
|
||||||
#include "final/foptimove.h"
|
#include "final/foptimove.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,6 +64,11 @@ FOptiMove::FOptiMove (int baud)
|
||||||
assert ( baud >= 0 );
|
assert ( baud >= 0 );
|
||||||
move_buf[0] = '\0';
|
move_buf[0] = '\0';
|
||||||
calculateCharDuration();
|
calculateCharDuration();
|
||||||
|
|
||||||
|
// ANSI set cursor address preset for undefined terminals
|
||||||
|
set_cursor_address (C_STR(CSI "%i%p1%d;%p2%dH"));
|
||||||
|
// Set carriage return preset
|
||||||
|
set_carriage_return (C_STR("\r"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -485,12 +491,37 @@ int FOptiMove::set_clr_eol (char cap[])
|
||||||
return F_clr_eol.length;
|
return F_clr_eol.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FOptiMove::check_boundaries ( int& xold, int& yold
|
||||||
|
, int& xnew, int& ynew )
|
||||||
|
{
|
||||||
|
if ( xold < 0 || xold >= screen_width )
|
||||||
|
xold = -1;
|
||||||
|
|
||||||
|
if ( yold < 0 || yold >= screen_height )
|
||||||
|
yold = -1;
|
||||||
|
|
||||||
|
if ( xnew < 0 )
|
||||||
|
xnew = 0;
|
||||||
|
|
||||||
|
if ( ynew < 0 )
|
||||||
|
ynew = 0;
|
||||||
|
|
||||||
|
if ( xnew >= screen_width )
|
||||||
|
xnew = screen_width - 1;
|
||||||
|
|
||||||
|
if ( ynew >= screen_height )
|
||||||
|
ynew = screen_height - 1;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
char* FOptiMove::moveCursor (int xold, int yold, int xnew, int ynew)
|
char* FOptiMove::moveCursor (int xold, int yold, int xnew, int ynew)
|
||||||
{
|
{
|
||||||
int method = 0;
|
int method = 0;
|
||||||
int move_time = LONG_DURATION;
|
int move_time = LONG_DURATION;
|
||||||
|
|
||||||
|
check_boundaries (xold, yold, xnew, ynew);
|
||||||
|
|
||||||
// Method 0: direct cursor addressing
|
// Method 0: direct cursor addressing
|
||||||
if ( isMethod0Faster(move_time, xnew, ynew) )
|
if ( isMethod0Faster(move_time, xnew, ynew) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,18 +9,21 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Werror
|
||||||
noinst_PROGRAMS = \
|
noinst_PROGRAMS = \
|
||||||
fobject_test \
|
fobject_test \
|
||||||
fmouse_test \
|
fmouse_test \
|
||||||
|
foptimove_test \
|
||||||
fstring_test \
|
fstring_test \
|
||||||
fpoint_test \
|
fpoint_test \
|
||||||
frect_test
|
frect_test
|
||||||
|
|
||||||
fobject_test_SOURCES = fobject-test.cpp
|
fobject_test_SOURCES = fobject-test.cpp
|
||||||
fmouse_test_SOURCES = fmouse-test.cpp
|
fmouse_test_SOURCES = fmouse-test.cpp
|
||||||
|
foptimove_test_SOURCES = foptimove-test.cpp
|
||||||
fstring_test_SOURCES = fstring-test.cpp
|
fstring_test_SOURCES = fstring-test.cpp
|
||||||
fpoint_test_SOURCES = fpoint-test.cpp
|
fpoint_test_SOURCES = fpoint-test.cpp
|
||||||
frect_test_SOURCES = frect-test.cpp
|
frect_test_SOURCES = frect-test.cpp
|
||||||
|
|
||||||
TESTS = fobject_test \
|
TESTS = fobject_test \
|
||||||
fmouse_test \
|
fmouse_test \
|
||||||
|
foptimove_test \
|
||||||
fstring_test \
|
fstring_test \
|
||||||
fpoint_test \
|
fpoint_test \
|
||||||
frect_test
|
frect_test
|
||||||
|
|
|
@ -83,9 +83,12 @@ POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
@CPPUNIT_TEST_TRUE@noinst_PROGRAMS = fobject_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@noinst_PROGRAMS = fobject_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ fmouse_test$(EXEEXT) fstring_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@ fmouse_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ fpoint_test$(EXEEXT) frect_test$(EXEEXT)
|
@CPPUNIT_TEST_TRUE@ foptimove_test$(EXEEXT) \
|
||||||
|
@CPPUNIT_TEST_TRUE@ fstring_test$(EXEEXT) fpoint_test$(EXEEXT) \
|
||||||
|
@CPPUNIT_TEST_TRUE@ frect_test$(EXEEXT)
|
||||||
@CPPUNIT_TEST_TRUE@TESTS = fobject_test$(EXEEXT) fmouse_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@TESTS = fobject_test$(EXEEXT) fmouse_test$(EXEEXT) \
|
||||||
|
@CPPUNIT_TEST_TRUE@ foptimove_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ fstring_test$(EXEEXT) fpoint_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@ fstring_test$(EXEEXT) fpoint_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ frect_test$(EXEEXT)
|
@CPPUNIT_TEST_TRUE@ frect_test$(EXEEXT)
|
||||||
@CPPUNIT_TEST_TRUE@check_PROGRAMS = $(am__EXEEXT_1)
|
@CPPUNIT_TEST_TRUE@check_PROGRAMS = $(am__EXEEXT_1)
|
||||||
|
@ -105,8 +108,10 @@ CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
@CPPUNIT_TEST_TRUE@am__EXEEXT_1 = fobject_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@am__EXEEXT_1 = fobject_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ fmouse_test$(EXEEXT) fstring_test$(EXEEXT) \
|
@CPPUNIT_TEST_TRUE@ fmouse_test$(EXEEXT) \
|
||||||
@CPPUNIT_TEST_TRUE@ fpoint_test$(EXEEXT) frect_test$(EXEEXT)
|
@CPPUNIT_TEST_TRUE@ foptimove_test$(EXEEXT) \
|
||||||
|
@CPPUNIT_TEST_TRUE@ fstring_test$(EXEEXT) fpoint_test$(EXEEXT) \
|
||||||
|
@CPPUNIT_TEST_TRUE@ frect_test$(EXEEXT)
|
||||||
PROGRAMS = $(noinst_PROGRAMS)
|
PROGRAMS = $(noinst_PROGRAMS)
|
||||||
am__fmouse_test_SOURCES_DIST = fmouse-test.cpp
|
am__fmouse_test_SOURCES_DIST = fmouse-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@am_fmouse_test_OBJECTS = fmouse-test.$(OBJEXT)
|
@CPPUNIT_TEST_TRUE@am_fmouse_test_OBJECTS = fmouse-test.$(OBJEXT)
|
||||||
|
@ -120,6 +125,11 @@ am__fobject_test_SOURCES_DIST = fobject-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@am_fobject_test_OBJECTS = fobject-test.$(OBJEXT)
|
@CPPUNIT_TEST_TRUE@am_fobject_test_OBJECTS = fobject-test.$(OBJEXT)
|
||||||
fobject_test_OBJECTS = $(am_fobject_test_OBJECTS)
|
fobject_test_OBJECTS = $(am_fobject_test_OBJECTS)
|
||||||
fobject_test_LDADD = $(LDADD)
|
fobject_test_LDADD = $(LDADD)
|
||||||
|
am__foptimove_test_SOURCES_DIST = foptimove-test.cpp
|
||||||
|
@CPPUNIT_TEST_TRUE@am_foptimove_test_OBJECTS = \
|
||||||
|
@CPPUNIT_TEST_TRUE@ foptimove-test.$(OBJEXT)
|
||||||
|
foptimove_test_OBJECTS = $(am_foptimove_test_OBJECTS)
|
||||||
|
foptimove_test_LDADD = $(LDADD)
|
||||||
am__fpoint_test_SOURCES_DIST = fpoint-test.cpp
|
am__fpoint_test_SOURCES_DIST = fpoint-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@am_fpoint_test_OBJECTS = fpoint-test.$(OBJEXT)
|
@CPPUNIT_TEST_TRUE@am_fpoint_test_OBJECTS = fpoint-test.$(OBJEXT)
|
||||||
fpoint_test_OBJECTS = $(am_fpoint_test_OBJECTS)
|
fpoint_test_OBJECTS = $(am_fpoint_test_OBJECTS)
|
||||||
|
@ -167,10 +177,11 @@ am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
||||||
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||||
am__v_CXXLD_1 =
|
am__v_CXXLD_1 =
|
||||||
SOURCES = $(fmouse_test_SOURCES) $(fobject_test_SOURCES) \
|
SOURCES = $(fmouse_test_SOURCES) $(fobject_test_SOURCES) \
|
||||||
$(fpoint_test_SOURCES) $(frect_test_SOURCES) \
|
$(foptimove_test_SOURCES) $(fpoint_test_SOURCES) \
|
||||||
$(fstring_test_SOURCES)
|
$(frect_test_SOURCES) $(fstring_test_SOURCES)
|
||||||
DIST_SOURCES = $(am__fmouse_test_SOURCES_DIST) \
|
DIST_SOURCES = $(am__fmouse_test_SOURCES_DIST) \
|
||||||
$(am__fobject_test_SOURCES_DIST) \
|
$(am__fobject_test_SOURCES_DIST) \
|
||||||
|
$(am__foptimove_test_SOURCES_DIST) \
|
||||||
$(am__fpoint_test_SOURCES_DIST) $(am__frect_test_SOURCES_DIST) \
|
$(am__fpoint_test_SOURCES_DIST) $(am__frect_test_SOURCES_DIST) \
|
||||||
$(am__fstring_test_SOURCES_DIST)
|
$(am__fstring_test_SOURCES_DIST)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
|
@ -532,6 +543,7 @@ top_srcdir = @top_srcdir@
|
||||||
@CPPUNIT_TEST_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Werror
|
@CPPUNIT_TEST_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Werror
|
||||||
@CPPUNIT_TEST_TRUE@fobject_test_SOURCES = fobject-test.cpp
|
@CPPUNIT_TEST_TRUE@fobject_test_SOURCES = fobject-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@fmouse_test_SOURCES = fmouse-test.cpp
|
@CPPUNIT_TEST_TRUE@fmouse_test_SOURCES = fmouse-test.cpp
|
||||||
|
@CPPUNIT_TEST_TRUE@foptimove_test_SOURCES = foptimove-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@fstring_test_SOURCES = fstring-test.cpp
|
@CPPUNIT_TEST_TRUE@fstring_test_SOURCES = fstring-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@fpoint_test_SOURCES = fpoint-test.cpp
|
@CPPUNIT_TEST_TRUE@fpoint_test_SOURCES = fpoint-test.cpp
|
||||||
@CPPUNIT_TEST_TRUE@frect_test_SOURCES = frect-test.cpp
|
@CPPUNIT_TEST_TRUE@frect_test_SOURCES = frect-test.cpp
|
||||||
|
@ -596,6 +608,10 @@ fobject_test$(EXEEXT): $(fobject_test_OBJECTS) $(fobject_test_DEPENDENCIES) $(EX
|
||||||
@rm -f fobject_test$(EXEEXT)
|
@rm -f fobject_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(fobject_test_OBJECTS) $(fobject_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(fobject_test_OBJECTS) $(fobject_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
foptimove_test$(EXEEXT): $(foptimove_test_OBJECTS) $(foptimove_test_DEPENDENCIES) $(EXTRA_foptimove_test_DEPENDENCIES)
|
||||||
|
@rm -f foptimove_test$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(CXXLINK) $(foptimove_test_OBJECTS) $(foptimove_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
fpoint_test$(EXEEXT): $(fpoint_test_OBJECTS) $(fpoint_test_DEPENDENCIES) $(EXTRA_fpoint_test_DEPENDENCIES)
|
fpoint_test$(EXEEXT): $(fpoint_test_OBJECTS) $(fpoint_test_DEPENDENCIES) $(EXTRA_fpoint_test_DEPENDENCIES)
|
||||||
@rm -f fpoint_test$(EXEEXT)
|
@rm -f fpoint_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(fpoint_test_OBJECTS) $(fpoint_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(fpoint_test_OBJECTS) $(fpoint_test_LDADD) $(LIBS)
|
||||||
|
@ -616,6 +632,7 @@ distclean-compile:
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmouse-test.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmouse-test.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fobject-test.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fobject-test.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foptimove-test.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpoint-test.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpoint-test.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frect-test.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frect-test.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstring-test.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstring-test.Po@am__quote@
|
||||||
|
@ -854,6 +871,13 @@ fmouse_test.log: fmouse_test$(EXEEXT)
|
||||||
--log-file $$b.log --trs-file $$b.trs \
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
foptimove_test.log: foptimove_test$(EXEEXT)
|
||||||
|
@p='foptimove_test$(EXEEXT)'; \
|
||||||
|
b='foptimove_test'; \
|
||||||
|
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||||
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
fstring_test.log: fstring_test$(EXEEXT)
|
fstring_test.log: fstring_test$(EXEEXT)
|
||||||
@p='fstring_test$(EXEEXT)'; \
|
@p='fstring_test$(EXEEXT)'; \
|
||||||
b='fstring_test'; \
|
b='fstring_test'; \
|
||||||
|
|
|
@ -269,7 +269,7 @@ void FMouseTest::x11MouseTest()
|
||||||
x11_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
x11_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
||||||
CPPUNIT_ASSERT ( x11_mouse.hasData() );
|
CPPUNIT_ASSERT ( x11_mouse.hasData() );
|
||||||
CPPUNIT_ASSERT ( x11_mouse.isInputDataPending() );
|
CPPUNIT_ASSERT ( x11_mouse.isInputDataPending() );
|
||||||
CPPUNIT_ASSERT ( strcmp(rawdata1, "@@") == 0 );
|
CPPUNIT_ASSERT ( std::strcmp(rawdata1, "@@") == 0 );
|
||||||
|
|
||||||
timeval tv;
|
timeval tv;
|
||||||
FObject::getCurrentTime(&tv);
|
FObject::getCurrentTime(&tv);
|
||||||
|
@ -573,7 +573,7 @@ void FMouseTest::sgrMouseTest()
|
||||||
sgr_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
sgr_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
||||||
CPPUNIT_ASSERT ( sgr_mouse.hasData() );
|
CPPUNIT_ASSERT ( sgr_mouse.hasData() );
|
||||||
CPPUNIT_ASSERT ( sgr_mouse.isInputDataPending() );
|
CPPUNIT_ASSERT ( sgr_mouse.isInputDataPending() );
|
||||||
CPPUNIT_ASSERT ( strcmp(rawdata1, "@@") == 0 );
|
CPPUNIT_ASSERT ( std::strcmp(rawdata1, "@@") == 0 );
|
||||||
|
|
||||||
timeval tv;
|
timeval tv;
|
||||||
FObject::getCurrentTime(&tv);
|
FObject::getCurrentTime(&tv);
|
||||||
|
@ -861,7 +861,7 @@ void FMouseTest::sgrMouseTest()
|
||||||
CPPUNIT_ASSERT ( ! sgr_mouse.hasEvent() );
|
CPPUNIT_ASSERT ( ! sgr_mouse.hasEvent() );
|
||||||
|
|
||||||
CPPUNIT_ASSERT ( sgr_mouse.isInputDataPending() );
|
CPPUNIT_ASSERT ( sgr_mouse.isInputDataPending() );
|
||||||
CPPUNIT_ASSERT ( strcmp(rawdata11, "@") == 0 );
|
CPPUNIT_ASSERT ( std::strcmp(rawdata11, "@") == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -876,7 +876,7 @@ void FMouseTest::urxvtMouseTest()
|
||||||
urxvt_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
urxvt_mouse.setRawData (rawdata1, sizeof(rawdata1));
|
||||||
CPPUNIT_ASSERT ( urxvt_mouse.hasData() );
|
CPPUNIT_ASSERT ( urxvt_mouse.hasData() );
|
||||||
CPPUNIT_ASSERT ( urxvt_mouse.isInputDataPending() );
|
CPPUNIT_ASSERT ( urxvt_mouse.isInputDataPending() );
|
||||||
CPPUNIT_ASSERT ( strcmp(rawdata1, "@@") == 0 );
|
CPPUNIT_ASSERT ( std::strcmp(rawdata1, "@@") == 0 );
|
||||||
|
|
||||||
timeval tv;
|
timeval tv;
|
||||||
FObject::getCurrentTime(&tv);
|
FObject::getCurrentTime(&tv);
|
||||||
|
@ -1163,7 +1163,7 @@ void FMouseTest::urxvtMouseTest()
|
||||||
CPPUNIT_ASSERT ( ! urxvt_mouse.hasEvent() );
|
CPPUNIT_ASSERT ( ! urxvt_mouse.hasEvent() );
|
||||||
|
|
||||||
CPPUNIT_ASSERT ( urxvt_mouse.isInputDataPending() );
|
CPPUNIT_ASSERT ( urxvt_mouse.isInputDataPending() );
|
||||||
CPPUNIT_ASSERT ( strcmp(rawdata11, "@") == 0 );
|
CPPUNIT_ASSERT ( std::strcmp(rawdata11, "@") == 0 );
|
||||||
|
|
||||||
// Negative values
|
// Negative values
|
||||||
char rawdata12[] = { 0x1b, '[', '3', '2', ';', '-', '5', ';', '5', 'M'
|
char rawdata12[] = { 0x1b, '[', '3', '2', ';', '-', '5', ';', '5', 'M'
|
||||||
|
|
|
@ -0,0 +1,215 @@
|
||||||
|
/***********************************************************************
|
||||||
|
* foptimove-test.cpp - FOptiMove unit tests *
|
||||||
|
* *
|
||||||
|
* This file is part of the Final Cut widget toolkit *
|
||||||
|
* *
|
||||||
|
* Copyright 2018 Markus Gans *
|
||||||
|
* *
|
||||||
|
* The Final Cut is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 3 of *
|
||||||
|
* the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* The Final Cut is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU Lesser General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU Lesser General Public *
|
||||||
|
* License along with this program. If not, see *
|
||||||
|
* <http://www.gnu.org/licenses/>. *
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
#include <cppunit/BriefTestProgressListener.h>
|
||||||
|
#include <cppunit/CompilerOutputter.h>
|
||||||
|
#include <cppunit/extensions/HelperMacros.h>
|
||||||
|
#include <cppunit/TestFixture.h>
|
||||||
|
#include <cppunit/TestResult.h>
|
||||||
|
#include <cppunit/TestResultCollector.h>
|
||||||
|
#include <cppunit/TestRunner.h>
|
||||||
|
|
||||||
|
#include <cppunit/SourceLine.h>
|
||||||
|
#include <cppunit/TestAssert.h>
|
||||||
|
|
||||||
|
#include <iomanip>
|
||||||
|
#include <final/final.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define CPPUNIT_ASSERT_CSTRING(expected, actual) \
|
||||||
|
check_c_string (expected, actual, CPPUNIT_SOURCELINE())
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void check_c_string ( const char* s1
|
||||||
|
, const char* s2
|
||||||
|
, CppUnit::SourceLine sourceLine )
|
||||||
|
{
|
||||||
|
if ( std::strcmp (s1, s2) == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
::CppUnit::Asserter::fail ("Strings are not equal", sourceLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FOptiMoveTest
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FOptiMoveTest : public CPPUNIT_NS::TestFixture
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FOptiMoveTest()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void classNameTest();
|
||||||
|
void noArgumentTest();
|
||||||
|
void ansiTest();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string printSequence (const std::string&);
|
||||||
|
|
||||||
|
// Adds code needed to register the test suite
|
||||||
|
CPPUNIT_TEST_SUITE (FOptiMoveTest);
|
||||||
|
|
||||||
|
// Add a methods to the test suite
|
||||||
|
CPPUNIT_TEST (classNameTest);
|
||||||
|
CPPUNIT_TEST (noArgumentTest);
|
||||||
|
CPPUNIT_TEST (ansiTest);
|
||||||
|
|
||||||
|
// End of test suite definition
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FOptiMoveTest::classNameTest()
|
||||||
|
{
|
||||||
|
FOptiMove opti_move;
|
||||||
|
const char* const classname = opti_move.getClassName();
|
||||||
|
CPPUNIT_ASSERT_CSTRING ( classname, "FOptiMove");
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FOptiMoveTest::noArgumentTest()
|
||||||
|
{
|
||||||
|
FOptiMove om;
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (1, 1, 5, 5), C_STR(CSI "6;6H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (5, 5, 9, 9), C_STR(CSI "10;10H"));
|
||||||
|
|
||||||
|
// No set cursor address preset
|
||||||
|
om.set_cursor_address (0);
|
||||||
|
CPPUNIT_ASSERT (om.moveCursor (1, 1, 5, 5) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FOptiMoveTest::ansiTest()
|
||||||
|
{
|
||||||
|
FOptiMove om;
|
||||||
|
om.setTermSize (80, 25);
|
||||||
|
om.setBaudRate (19200);
|
||||||
|
om.setTabStop (8);
|
||||||
|
om.set_tabular (C_STR("\t"));
|
||||||
|
om.set_back_tab (C_STR(CSI "Z"));
|
||||||
|
om.set_cursor_home (C_STR(CSI "H"));
|
||||||
|
om.set_carriage_return (C_STR("\r"));
|
||||||
|
om.set_cursor_up (C_STR(CSI "A"));
|
||||||
|
om.set_cursor_down (C_STR(CSI "B"));
|
||||||
|
om.set_cursor_left (C_STR(CSI "D"));
|
||||||
|
om.set_cursor_right (C_STR(CSI "C"));
|
||||||
|
om.set_cursor_address (C_STR(CSI "%i%p1%d;%p2%dH"));
|
||||||
|
om.set_column_address (C_STR(CSI "%i%p1%dG"));
|
||||||
|
om.set_row_address (C_STR(CSI "%i%p1%dd"));
|
||||||
|
om.set_parm_up_cursor (C_STR(CSI "%p1%dA"));
|
||||||
|
om.set_parm_down_cursor (C_STR(CSI "%p1%dB"));
|
||||||
|
om.set_parm_left_cursor (C_STR(CSI "%p1%dD"));
|
||||||
|
om.set_parm_right_cursor (C_STR(CSI "%p1%dC"));
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (0, 0, 5, 5), C_STR(CSI "6;6H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (5, 5, 0, 0), C_STR(CSI "H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (79, 1, 0, 1), C_STR("\r"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (79, 1, 0, 2), C_STR("\r" CSI "B"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (9, 4, 10, 4), C_STR(CSI "C"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (10, 4, 9, 4), C_STR(CSI "D"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (9, 4, 11, 4), C_STR(CSI "12G"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (11, 4, 9, 4), C_STR(CSI "10G"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (1, 0, 8, 0), C_STR("\t"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (16, 0, 16, 1), C_STR(CSI "B"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (16, 1, 16, 0), C_STR(CSI "A"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (16, 0, 16, 2), C_STR(CSI "3d"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (16, 2, 16, 0), C_STR(CSI "1d"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (3, 2, 79, 2), C_STR(CSI "80G"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (5, 5, 75, 20), C_STR(CSI "21;76H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (39, 0, 32, 0), C_STR(CSI "Z"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (10, 0, 8, 0), C_STR("\r\t"));
|
||||||
|
|
||||||
|
// xold is outside screen
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (99, 10, 79, 10), C_STR(CSI "11;80H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (-3, 33, 50, 10), C_STR(CSI "11;51H"));
|
||||||
|
|
||||||
|
// ynew is outside screen
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (23, 33, 23, 10), C_STR(CSI "11;24H"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (23, -3, 12, 10), C_STR(CSI "11;13H"));
|
||||||
|
|
||||||
|
// xnew is outside screen
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (53, 22, 100, 22), C_STR(CSI "80G"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (3, 22, -5, 22), C_STR("\r"));
|
||||||
|
|
||||||
|
// ynew is outside screen
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (53, 22, 53, 40), C_STR(CSI "25d"));
|
||||||
|
CPPUNIT_ASSERT_CSTRING (om.moveCursor (53, 2, 53, -3), C_STR(CSI "1d"));
|
||||||
|
|
||||||
|
//om.printDurations();S
|
||||||
|
/*
|
||||||
|
om.set_cursor_to_ll (TCAP(fc::t_cursor_to_ll));
|
||||||
|
om.set_auto_left_margin (FTermcap::automatic_left_margin);
|
||||||
|
om.set_eat_newline_glitch (FTermcap::eat_nl_glitch);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
std::string FOptiMoveTest::printSequence (const std::string& s)
|
||||||
|
{
|
||||||
|
std::ostringstream sequence;
|
||||||
|
|
||||||
|
for (std::string::size_type i = 0; i < s.length(); ++i)
|
||||||
|
{
|
||||||
|
switch ( int(s[i]) )
|
||||||
|
{
|
||||||
|
case 0x08:
|
||||||
|
sequence << "BS ";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x09:
|
||||||
|
sequence << "TAB ";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x0a:
|
||||||
|
sequence << "LF ";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x0d:
|
||||||
|
sequence << "CR ";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x1b:
|
||||||
|
sequence << "Esc ";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
sequence << s[i];
|
||||||
|
sequence << ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sequence.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put the test suite in the registry
|
||||||
|
CPPUNIT_TEST_SUITE_REGISTRATION (FOptiMoveTest);
|
||||||
|
|
||||||
|
// The general unit test main part
|
||||||
|
#include <main-test.inc>
|
Loading…
Reference in New Issue