Dear all,
I have prepared a unit test framework based on google-test (gtest). You
can see the commits at
http://git.lyx.org/?p=developers/vfr/lyx.git;a=shortlog;h=refs/heads/tests.
It includes gtest-1.7.0 (permitted by the license).
Unit testing can be enabled by running CMake with
-DLYX_ENABLE_UNIT_TESTS. This will make a target gtest-main and
unit-tests. It also create LyX.lib against which the unit testing
executable is linked so that the functionality in the core can be tested.
I have created a first (example) test case in tests/src/Buffer.cpp,
called "BufferTest", which has three tests and which is supposed to test
the functionality of "lyx::Buffer".
A CMake target "unit-tests" now builds an executable running all
unit-tests and gives an output as below. For each test case, there is
also automatically a CTest created. This test runs "unit-tests
--gtest_filter=BufferTest" and gives a summary. For more details, it is
adviced to run the unit-tests executable directly (or improve CMake to
capture the output somehow).
Any comments ? Shall I proceed to push this to master ?
Vincent
#ctest -N
Test project C:/Users/Vincent/Documents/LyX/build/lyx/tests
Test #1: unit_test/src/BufferTest
Total Tests: 1
#ctest -R
Test project C:/Users/Vincent/Documents/LyX/build/lyx/tests
Start 1: unit_test/src/BufferTest
1/1 Test #1: unit_test/src/BufferTest .........***Failed 0.27 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.28 sec
The following tests FAILED:
1 - unit_test/src/BufferTest (Failed)
Errors while running CTest
#unit-tests
Running main() from gtest_main.cc
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from BufferTest
[ RUN ] BufferTest.NonExistingFile
[ OK ] BufferTest.NonExistingFile (0 ms)
[ RUN ] BufferTest.NonExistingFileOperations
[ OK ] BufferTest.NonExistingFileOperations (0 ms)
[ RUN ] BufferTest.UnicodeCharacters
..\..\..\source\gitlyx\tests\src\Buffer.cpp(45): error: Value of:
string("C:/tés
t.lyx")
Actual: "C:/t\xA8\xA6st.lyx"
Expected: fn1.absFileName()
Which is: "C:/t\xEF\xBF\xBD\xEF\xBF\xBDst.lyx"
[ FAILED ] BufferTest.UnicodeCharacters (0 ms)
[----------] 3 tests from BufferTest (0 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 1 test case ran. (0 ms total)
[ PASSED ] 2 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] BufferTest.UnicodeCharacters
1 FAILED TEST