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



Reply via email to