add script runs unit test
This commit is contained in:
parent
8aae32ec4c
commit
05d488f98d
2 changed files with 37 additions and 0 deletions
|
@ -20,13 +20,16 @@ else:
|
|||
test_env.AppendUnique(LIBS='dl')
|
||||
test_env.AppendUnique(CXXFLAGS='-g')
|
||||
test_env['CXXFLAGS'] = copy(test_env['LIBMAPNIK_CXXFLAGS'])
|
||||
test_env['CPPFLAGS'] = '-fsanitize=bounds'
|
||||
test_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||
|
||||
if test_env['HAS_CAIRO']:
|
||||
test_env.PrependUnique(CPPPATH=test_env['CAIRO_CPPPATHS'])
|
||||
test_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||
test_env.PrependUnique(CPPPATH=['./'])
|
||||
if test_env['PLATFORM'] == 'Linux':
|
||||
test_env['LINKFLAGS'].append('-pthread')
|
||||
test_env['LINKFLAGS'].append('-fsanitize=bounds')
|
||||
test_env.AppendUnique(LIBS='boost_program_options%s' % env['BOOST_APPEND'])
|
||||
test_env_local = test_env.Clone()
|
||||
|
||||
|
@ -34,6 +37,7 @@ else:
|
|||
# unit tests
|
||||
sources = glob.glob('./unit/*/*.cpp')
|
||||
sources.extend(glob.glob('./unit/*.cpp'))
|
||||
sources.append('../src/text/scrptrun.cpp')
|
||||
test_program = test_env_local.Program("./unit/run", source=sources)
|
||||
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||
Depends(test_program, env.subst('../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||
|
|
33
test/unit/text/script_runs.cpp
Normal file
33
test/unit/text/script_runs.cpp
Normal file
|
@ -0,0 +1,33 @@
|
|||
#include "catch.hpp"
|
||||
#include <mapnik/unicode.hpp>
|
||||
#include <mapnik/text/scrptrun.hpp>
|
||||
#include <iostream>
|
||||
|
||||
TEST_CASE("nested script runs")
|
||||
{
|
||||
mapnik::value_unicode_string text("Nested text runs(первый(second(третий)))"); //mixed scripts
|
||||
ScriptRun runs(text.getBuffer(), text.length());
|
||||
std::size_t count = 0;
|
||||
std::size_t size = 0;
|
||||
while (runs.next())
|
||||
{
|
||||
if (count & 1) CHECK(runs.getScriptCode() == USCRIPT_CYRILLIC);
|
||||
else CHECK(runs.getScriptCode() == USCRIPT_LATIN);
|
||||
size += runs.getScriptEnd() - runs.getScriptStart();
|
||||
++count;
|
||||
}
|
||||
REQUIRE(count == 7);
|
||||
REQUIRE(size == text.length());
|
||||
}
|
||||
|
||||
TEST_CASE("many punctuation chars")
|
||||
{
|
||||
mapnik::value_unicode_string text("(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((test"); // more than 128 "paired" chars
|
||||
ScriptRun runs(text.getBuffer(), text.length());
|
||||
while (runs.next())
|
||||
{
|
||||
CHECK(runs.getScriptCode() == 25);
|
||||
CHECK(runs.getScriptStart() == 0);
|
||||
CHECK(runs.getScriptEnd() == text.length());
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue