From a6df5f9056e8eba0d7f67585d7553ebdf641f84f Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 25 Feb 2015 18:54:31 -0800 Subject: [PATCH] tests for line wrap bug (currently non-ideal) refs #2701 --- .../text-wrap-512-512-1.0-grid-reference.json | 139 ++++++++++++++++++ .../text-wrap-512-512-2.0-grid-reference.json | 139 ++++++++++++++++++ .../text-wrap-512-512-1.0-agg-reference.png | Bin 0 -> 9168 bytes .../text-wrap-512-512-1.0-cairo-reference.png | Bin 0 -> 9230 bytes .../text-wrap-512-512-2.0-agg-reference.png | Bin 0 -> 14186 bytes .../text-wrap-512-512-2.0-cairo-reference.png | Bin 0 -> 14465 bytes tests/visual_tests/styles/text-wrap.xml | 87 +++++++++++ 7 files changed, 365 insertions(+) create mode 100644 tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json create mode 100644 tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json create mode 100644 tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/text-wrap-512-512-1.0-cairo-reference.png create mode 100644 tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png create mode 100644 tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png create mode 100644 tests/visual_tests/styles/text-wrap.xml diff --git a/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json new file mode 100644 index 000000000..1f3b63330 --- /dev/null +++ b/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json @@ -0,0 +1,139 @@ +{ + "keys": [ + "", + "2", + "1", + "3" + ], + "data": {}, + "grid": [ + " !!! ", + " !!! ", + " !!!! ", + " !! !! ", + " ", + " ", + " ", + " !! !! ", + " !!! ", + " !!! ", + " !!! ", + " !! !! ", + " !! !! ", + " ", + " ", + " ", + " !! !! ", + " !!! ", + " !! ", + " !!! ", + " !! !! ", + " !! ! ", + " ", + " ", + " !! ! ", + " !!!! ", + " !!! ", + " !!! ", + " !!!! ", + " !! !! ", + " ", + " ", + " ", + " !! !! ", + " !!! ", + " !!! ", + " !!! ", + " !! !! ", + " !! !! ", + " ", + " ", + " ", + " !! !! ", + " !!! ", + " !! ", + " !!! ", + " !! !! ", + " !! ! ", + " ", + " ", + " !! ! ", + " !!!! ", + " !!! ", + " !!! ## ## ## ## #### ", + " !!!! ### ### #### ", + " !! !! ## ## ## ", + " #### ### #### ", + " ## ## ## ## #### ", + " ## ## ## # ## ## ", + " ", + " ", + " # ## ## ## ## ## ", + " #### ## ## #### ", + " ### ### ## ", + " ## ### ## ", + " #### ### #### ", + " ## ## ## ## ## ## ", + " ", + " ", + " ", + " # ## ## ## ## ## ", + " #### #### #### ", + " ## ### ## $ $$ ", + " ## ### ### $$$$ ", + " #### #### #### $$$ ", + " ## ## ## ## ## # $$ ", + " $$$$ ", + " $$ $$ ", + " ", + " ", + " ", + " $$ $ $$ $$ ", + " $$$$ $$$$ ", + " $$ $$$ ", + " $$$ $$$ ", + " $$$$ $$$$ ", + " $$ $$ $$ $$ ", + " ", + " ", + " ", + " $$$$ $$ $$ ", + " $$$$ $$$ ", + " $$ $$ ", + " $$$$ $$$ ", + " $$$$ $$ $$ ", + " $$ $$ $ $$ ", + " ", + " ", + " $ $$ $ $$ ", + " $$$$ $$$$ ", + " $$$ $$$ ", + " $$ $$ ", + " $$$$ $$$$ ", + " $$ $$ $$ $$ ", + " ", + " ", + " ", + " $$ $ $$ $$ ", + " $$$$ $$$$ ", + " $$ $$$ ", + " $$$ $$$ ", + " $$$$ $$$$ ", + " $$ $$ $$ $$ ", + " ", + " ", + " ", + " $$$$ $$ $$ ", + " $$$$ $$$ ", + " $$ $$ ", + " $$$$ $$$ ", + " $$$$ $$ $$ ", + " $$ $$ $ $$ ", + " ", + " ", + " $ $$ $ $$ ", + " $$$$ $$$$ ", + " $$$ $$$ ", + " $$ $$ " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json new file mode 100644 index 000000000..6d6c4ba22 --- /dev/null +++ b/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json @@ -0,0 +1,139 @@ +{ + "keys": [ + "", + "2", + "3", + "1" + ], + "data": {}, + "grid": [ + " !!!!! ", + " !!!!! ", + " !!!!!! ", + " !!!!!!! ", + " !!!! !!!! ", + " !!!! !!! ", + " !!! !!!! ", + " ", + " ", + " ", + " ", + " ", + " !!! !!! ", + " !!! !!!! ", + " !!!! !!! ", + " !!!!!!!! ", + " !!!!!! ", + " !!!!! ", + " !!!! ", + " !!!!! ", + " !!!!!!! ", + " !!! !!!! ", + " !!!! !!! ", + " !!!! !!!! ", + " !!! !!! ", + " ", + " ", + " ", + " ", + " ", + " !!! !!!! ", + " !!!! !!! ", + " !!! !!!! ", + " !!!!!!! ", + " !!!!! ", + " !!!! #### ### ", + " !!!!! ### #### ", + " !!!!!! ######## ", + " !!!!!!! ###### ", + " !!!! !!!! ##### ", + " !!! !!!! #### ", + " !!!! !!! $$$ $$$ $$$ $$$ $$$ $$$$ ###### ", + " $$$$ $$$$ $$$$ $$$$ $$$$ $$$ ###### ", + " $$$$$$$$ $$$$$$$$ $$$ $$$$ ######## ", + " $$$$$$ $$$$$$ $$$$$$$ #### #### ", + " $$$$$$ $$$$$$ $$$$$ ### ### ", + " $$$$ $$$$ $$$$ ### ### ", + " !!!! !!! $$$$ $$$$$ $$$$$ ", + " !!! !!! $$$$$$ $$$$$$ $$$$$$$ ", + " !!!! !!!! $$$$$$$$ $$$$$$$$ $$$ $$$ ", + " !!!!!!! $$$ $$$ $$$$ $$$ $$$$ $$$$ ", + " !!!!! $$$$ $$$$ $$$ $$$$ $$$$ $$$$ ", + " !!!!! $$$ $$$ $$$$ $$$ $$$ $$$ ### ### ### #### ", + " !!!!! #### #### #### ### ", + " !!!!!! ### #### ### #### ", + " !!!!!!! ####### ####### ", + " !!!! !!!! ##### ##### ", + " !!!! !!! #### #### ", + " !!! !!!! $$$ $$$ $$$ $$$ $$$ $$$ ##### ##### ", + " $$$$ $$$$ $$$$ $$$$ $$$ $$$$ ###### ####### ", + " $$$$ $$$ $$$ $$$$ $$$$ $$$$ ####### ### ### ", + " $$$$$$$ $$$$$$$ $$$$$$$ #### #### #### #### ", + " $$$$$$ $$$$$$ $$$$$$ ### #### #### #### ", + " $$$$ $$$$ $$$$$ #### ### ### ### ", + " $$$$ $$$$ $$$$$ ", + " !!! !!!! $$$$$$ $$$$$$ $$$$$ ", + " !!!! !!! $$$$$$$$ $$$$$$$ $$$$$$$ ", + " !!!!!!!! $$$ $$$ $$$ $$$$ $$$$ $$$$ ", + " !!!!!! $$$$ $$$$ $$$$ $$$$ $$$ $$$ ", + " !!!!! $$$ $$$ $$$$ $$$ $$$$ $$$$ ### ### ### ### ", + " !!!! #### #### ### #### ", + " !!!!! ### #### #### #### ", + " !!!!!!! ####### ####### ", + " !!! !!!! ###### ##### ", + " !!!! !!! #### ##### ", + " !!!! !!!! #### ##### ", + " !!! !!! $$$ $$$$ $$$ $$$ $$$$ $$$ ###### ##### ", + " $$$$ $$$ $$$$ $$$$ $$$ $$$$ ####### ####### ", + " $$$$$$$$ $$$ $$$ $$$$$$$$ ### #### #### #### ", + " $$$$$$ $$$$$$$ $$$$$$ ### #### ### ### ", + " $$$$$ $$$$$ $$$$$ #### ### #### #### ", + " $$$$ $$$$ $$$$ ", + " !!! !!!! $$$$$ $$$$$ $$$$$ ", + " !!!! !!! $$$$$$$ $$$$$$$ $$$$$$ ", + " !!! !!!! $$$ $$$$ $$$$ $$$ $$$$$$$$ ", + " !!!!!!! $$$$ $$$ $$$ $$$$ $$$ $$$$ ", + " !!!!! $$$$ $$$$ $$$$ $$$$ $$$ $$$ ", + " !!!! $$$ $$$ $$$ $$$ $$$ $$$ #### ### #### ### ", + " !!!!! ### #### ### #### ", + " !!!!!! ######## ######## ", + " !!!!!!! ###### ###### ", + " !!!! !!!! ##### ##### ", + " !!! !!!! #### #### ", + " !!!! !!! ###### ###### ", + " ###### ###### ", + " ######## ######## ", + " #### #### #### #### ", + " ### ### ### ### ", + " ### ### ### ### ", + " ", + " ", + " ", + " ", + " ", + " ### ### ### #### ", + " #### #### #### ### ", + " ### #### ### #### ", + " ####### ####### ", + " ###### ##### ", + " #### #### ", + " ##### ##### ", + " ###### ####### ", + " ####### ### ### ", + " #### #### #### #### ", + " ### #### #### #### ", + " #### ### ### ### ", + " ", + " ", + " ", + " ", + " ", + " ### ### ### ### ", + " #### #### ### #### ", + " ### #### #### #### ", + " ####### ####### ", + " ###### ###### ", + " #### ##### ", + " #### ##### " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..5921aaa1dc6e06a432731ccbc4a8ae8367201487 GIT binary patch literal 9168 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 a+k5pZW$kfEN5Zkdil#Qy-z#opZj literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb802703b55428c9e1f66fc39df21b36b3830dd GIT binary patch literal 14186 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 F{{RzLI}-o^ literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..d20074885175d13fbe0fd8629739b9f1723ffcd1 GIT binary patch literal 14465 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 f>b-0kGPi*WA>B2t)z6EBz`yV^LWosz2{ literal 0 HcmV?d00001 diff --git a/tests/visual_tests/styles/text-wrap.xml b/tests/visual_tests/styles/text-wrap.xml new file mode 100644 index 000000000..64fb6c345 --- /dev/null +++ b/tests/visual_tests/styles/text-wrap.xml @@ -0,0 +1,87 @@ + + + + 512,512 + + + + + 1 + + + + { + "type": "FeatureCollection", + + "features": [ + + { "type": "Feature", + "properties": { + "label": "this,that", + "wrap-character":" ", + "repeat-wrap-character":false + }, + "geometry" : { "type": "Point", "coordinates": [ 2.5, 2.5 ] } + }, + { "type": "Feature", + "properties": { + "label": "this-that", + "wrap-character":"X", + "repeat-wrap-character":false + }, + "geometry" : { "type": "Point", "coordinates": [ 0, 5 ] } + }, + { "type": "Feature", + "properties": { + "label": "this-that", + "wrap-character":"X", + "repeat-wrap-character":true + }, + "geometry" : { "type": "Point", "coordinates": [ 5, 0 ] } + } + ] + } + + + geojson + + + + + + + + + frame + + csv + +x,y +-1,-1 +6,-1 +-1,6 +6,6 + + + + +