diff options
author | Marius Kintel <marius@kintel.net> | 2013-12-11 07:50:52 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-12-11 07:50:52 (GMT) |
commit | 6987ac927907bd2440abd8336cf6fa095a984bab (patch) | |
tree | ad119a79974ae6f875dffd0801154617755ee59c /tests | |
parent | d14f0be01c06a872a7fb0cef6e0fa67ad7bc4a4f (diff) | |
parent | 509a466ddd903906d290e30e98e5b6b01359b2f4 (diff) |
Merge pull request #561 from brodykenrick/master
Unicode support for search, length and STRING[] accesses (+ a fix for 3rd Party CGAL lib issue on Ubunti)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 42 | ||||
-rw-r--r-- | tests/FindGLIB2.cmake | 28 | ||||
-rw-r--r-- | tests/regression/echotest/search-tests-unicode-expected.echo | 109 | ||||
-rw-r--r-- | tests/regression/echotest/string-unicode-expected.echo | 107 |
4 files changed, 280 insertions, 6 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 370c8be..d76f498 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -366,10 +366,10 @@ if (NOT $ENV{CGALDIR} STREQUAL "") elseif (NOT $ENV{OPENSCAD_LIBRARIES} STREQUAL "") if (EXISTS "$ENV{OPENSCAD_LIBRARIES}/lib/CGAL") set(CGAL_DIR "$ENV{OPENSCAD_LIBRARIES}/lib/CGAL") - set(CMAKE_MODULE_PATH "${CGAL_DIR}") + set(CMAKE_MODULE_PATH "${CGAL_DIR}" ${CMAKE_MODULE_PATH}) elseif (EXISTS "$ENV{OPENSCAD_LIBRARIES}/include/CGAL") set(CGAL_DIR "$ENV{OPENSCAD_LIBRARIES}") - set(CMAKE_MODULE_PATH "${CGAL_DIR}") + set(CMAKE_MODULE_PATH "${CGAL_DIR}" ${CMAKE_MODULE_PATH}) endif() endif() message(STATUS "CGAL_DIR: " ${CGAL_DIR}) @@ -383,12 +383,40 @@ if("${CGAL_MAJOR_VERSION}.${CGAL_MINOR_VERSION}" VERSION_LESS 3.6) message(FATAL_ERROR "CGAL >= 3.6 required") endif() inclusion(CGAL_DIR CGAL_INCLUDE_DIRS) +#Remove bad BOOST libraries from CGAL 3rd party dependencies when they don't exist (such as on 64-bit Ubuntu 13.10). +#Libs of concern are /usr/lib/libboost_thread.so;/usr/lib/libboost_system.so; +#Confirmed bug in CGAL @ https://bugs.launchpad.net/ubuntu/+source/cgal/+bug/1242111 +string(FIND "${CGAL_3RD_PARTY_LIBRARIES}" "/usr/lib/libboost_system.so" FIND_POSITION ) +if(NOT "-1" STREQUAL ${FIND_POSITION} ) + if(NOT EXISTS "/usr/lib/libboost_system.so") + MESSAGE( STATUS "CGAL_3RD_PARTY_LIBRARIES:Removing non-existent /usr/lib/libboost_system.so" ) + string(REPLACE "/usr/lib/libboost_system.so" "" CGAL_3RD_PARTY_LIBRARIES ${CGAL_3RD_PARTY_LIBRARIES}) + endif() +endif() +string(FIND "${CGAL_3RD_PARTY_LIBRARIES}" "/usr/lib/libboost_thread.so" FIND_POSITION ) +if(NOT "-1" STREQUAL ${FIND_POSITION} ) + if(NOT EXISTS "/usr/lib/libboost_thread.so") + MESSAGE( STATUS "CGAL_3RD_PARTY_LIBRARIES:Removing non-existent /usr/lib/libboost_thread.so" ) + string(REPLACE "/usr/lib/libboost_thread.so" "" CGAL_3RD_PARTY_LIBRARIES ${CGAL_3RD_PARTY_LIBRARIES}) + endif() +endif() if(${CMAKE_CXX_COMPILER} MATCHES ".*clang.*" AND NOT ${CGAL_CXX_FLAGS_INIT} STREQUAL "" ) string(REPLACE "-frounding-math" "" CGAL_CXX_FLAGS_INIT ${CGAL_CXX_FLAGS_INIT}) string(REPLACE "--param=ssp-buffer-size=4" "" CGAL_CXX_FLAGS_INIT ${CGAL_CXX_FLAGS_INIT}) endif() +if (NOT $ENV{OPENSCAD_LIBRARIES} STREQUAL "") + # Force pkg-config to look _only_ in the local library folder + # in case OPENSCAD_LIBRARIES is set. + set(ENV{PKG_CONFIG_PATH} "$ENV{OPENSCAD_LIBRARIES}/lib/pkgconfig") + set(ENV{PKG_CONFIG_LIBDIR} "$ENV{OPENSCAD_LIBRARIES}/lib/pkgconfig") +endif() + +find_package(GLIB2 2.2.0 REQUIRED) +add_definitions(${GLIB2_DEFINITIONS}) +inclusion(GLIB2_DIR GLIB2_INCLUDE_DIRS) + # Imagemagick if (SKIP_IMAGEMAGICK) @@ -560,8 +588,8 @@ set(OFFSCREEN_SOURCES ../src/OpenCSGRenderer.cc) add_library(tests-core STATIC ${CORE_SOURCES}) -target_link_libraries(tests-core ${OPENGL_LIBRARIES}) -set(TESTS-CORE-LIBRARIES ${OPENGL_LIBRARIES} ${Boost_LIBRARIES}) +target_link_libraries(tests-core ${OPENGL_LIBRARIES} ${GLIB2_LIBRARIES} ) +set(TESTS-CORE-LIBRARIES ${OPENGL_LIBRARIES} ${GLIB2_LIBRARIES} ${Boost_LIBRARIES} ) add_library(tests-common STATIC ${COMMON_SOURCES}) target_link_libraries(tests-common tests-core) @@ -581,7 +609,7 @@ set(TESTS-NOCGAL-LIBRARIES ${TESTS-CORE-LIBRARIES}) # modulecachetest # add_executable(modulecachetest modulecachetest.cc) -target_link_libraries(modulecachetest tests-nocgal ${TESTS-NOCGAL-LIBRARIES} ${Boost_LIBRARIES}) +target_link_libraries(modulecachetest tests-nocgal ${TESTS-NOCGAL-LIBRARIES}) # # csgtexttest @@ -601,7 +629,7 @@ target_link_libraries(cgalcachetest tests-cgal ${TESTS-CGAL-LIBRARIES} ${GLEW_LI # add_executable(openscad_nogui ../src/openscad.cc) set_target_properties(openscad_nogui PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing -DEIGEN_DONT_ALIGN -DENABLE_CGAL -DENABLE_OPENCSG ${CGAL_CXX_FLAGS_INIT}") -target_link_libraries(openscad_nogui tests-offscreen tests-cgal tests-nocgal ${TESTS-CORE-LIBRARIES} ${TESTS-CGAL-LIBRARIES} ${GLEW_LIBRARY} ${Boost_LIBRARIES} ${OPENCSG_LIBRARY} ${COCOA_LIBRARY} ) +target_link_libraries(openscad_nogui tests-offscreen tests-cgal tests-nocgal ${TESTS-CORE-LIBRARIES} ${TESTS-CGAL-LIBRARIES} ${GLEW_LIBRARY} ${OPENCSG_LIBRARY} ${COCOA_LIBRARY} ) # # GUI binary tests @@ -781,8 +809,10 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES} ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/dim-all.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/string-test.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/string-indexing.scad + ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/string-unicode.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/vector-values.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/search-tests.scad + ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/search-tests-unicode.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/recursion-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/value-reassignment-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/value-reassignment-tests2.scad diff --git a/tests/FindGLIB2.cmake b/tests/FindGLIB2.cmake new file mode 100644 index 0000000..9164c39 --- /dev/null +++ b/tests/FindGLIB2.cmake @@ -0,0 +1,28 @@ +find_package(PkgConfig REQUIRED) + +pkg_search_module(GLIB2 REQUIRED glib-2.0) +#message("GLIB2_LIBRARIES ${GLIB2_LIBRARIES}") +message("GLIB2_LIBRARY_DIRS ${GLIB2_LIBRARY_DIRS}") +#message("GLIB2_LDFLAGS ${GLIB2_LDFLAGS}") +#message("GLIB2_LDFLAGS_OTHER ${GLIB2_LDFLAGS_OTHER}") +message("GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS}") +#message("GLIB2_CFLAGS ${GLIB2_CFLAGS}") +#message("GLIB2_CFLAGS_OTHER ${GLIB2_CFLAGS_OTHER}") +message("GLIB2_LIBDIR ${GLIB2_LIBDIR}") + +set(GLIB2_DEFINITIONS ${GLIB2_CFLAGS_OTHER}) +#message("GLIB2_DEFINITIONS ${GLIB2_DEFINITIONS}") + +set(GLIB2_LIBRARY_NAMES ${GLIB2_LIBRARIES}) +set(GLIB2_LIBRARIES "") +foreach(GLIB2_LIB ${GLIB2_LIBRARY_NAMES}) +# message("lib: ${GLIB2_LIB}") + set(TMP TMP-NOTFOUND) + find_library(TMP NAMES ${GLIB2_LIB} + PATHS ${GLIB2_LIBRARY_DIRS} + PATHS ${GLIB2_LIBDIR} + NO_DEFAULT_PATH) +# message("TMP: ${TMP}") + list(APPEND GLIB2_LIBRARIES "${TMP}") +endforeach() +message("GLIB2_LIBRARIES: ${GLIB2_LIBRARIES}") diff --git a/tests/regression/echotest/search-tests-unicode-expected.echo b/tests/regression/echotest/search-tests-unicode-expected.echo new file mode 100644 index 0000000..801bc8c --- /dev/null +++ b/tests/regression/echotest/search-tests-unicode-expected.echo @@ -0,0 +1,109 @@ +ECHO: "----- Lookup of 1 byte into 1 byte" +ECHO: "Expect [0] for search(a, aaaa)=[0]. OK" +ECHO: "Expect [0] for search(a, aaaa, 1)=[0]. OK" +ECHO: "Expect [0, 0] for search(aa, aaaa)=[0, 0]. OK" +ECHO: "Expect [0, 0] for search(aa, aaaa, 1)=[0, 0]. OK" +ECHO: "Expect [[0, 1, 2, 3]] for search(a, aaaa, 0)=[[0, 1, 2, 3]]. OK" +ECHO: "Expect [[0, 1]] for search(a, aaaa, 2)=[[0, 1]]. OK" +ECHO: "Expect [[0, 1, 2]] for search(a, aaaa, 3)=[[0, 1, 2]]. OK" +ECHO: "Expect [[0, 1, 2, 3]] for search(a, aaaa, 4)=[[0, 1, 2, 3]]. OK" +ECHO: "Expect [[0, 1, 2, 3], [0, 1, 2, 3]] for search(aa, aaaa, 0)=[[0, 1, 2, 3], [0, 1, 2, 3]]. OK" + WARNING: search term not found: "b" +ECHO: "Expect [] for search(b, aaaa)=[]. OK" + WARNING: search term not found: "b" +ECHO: "Expect [] for search(b, aaaa, 1)=[]. OK" + WARNING: search term not found: "b" +ECHO: "Expect [[]] for search(b, aaaa, 0)=[[]]. OK" + WARNING: search term not found: "b" +ECHO: "Expect [[]] for search(b, aaaa, 2)=[[]]. OK" + WARNING: search term not found: "b" + WARNING: search term not found: "b" +ECHO: "Expect [] for search(bb, aaaa)=[]. OK" + WARNING: search term not found: "b" + WARNING: search term not found: "b" +ECHO: "Expect [] for search(bb, aaaa, 1)=[]. OK" + WARNING: search term not found: "b" + WARNING: search term not found: "b" +ECHO: "Expect [[], []] for search(bb, aaaa, 0)=[[], []]. OK" + WARNING: search term not found: "b" + WARNING: search term not found: "b" +ECHO: "Expect [[], []] for search(bb, aaaa, 2)=[[], []]. OK" +ECHO: "Expect [] for search(, aaaa)=[]. OK" +ECHO: "Expect [] for search(, )=[]. OK" + WARNING: search term not found: "a" +ECHO: "Expect [] for search(a, )=[]. OK" +ECHO: "----- Lookup of multi-byte into 1 byte" + WARNING: search term not found: "Π" +ECHO: "Expect [] for search(Π, aaaa)=[]. OK" + WARNING: search term not found: "π‘" +ECHO: "Expect [] for search(π‘, aaaa)=[]. OK" + WARNING: search term not found: "Π" +ECHO: "Expect [[]] for search(Π, aaaa, 0)=[[]]. OK" + WARNING: search term not found: "π‘" +ECHO: "Expect [[]] for search(π‘, aaaa, 0)=[[]]. OK" + WARNING: search term not found: "Π" + WARNING: search term not found: "Π" +ECHO: "Expect [] for search(ΠΠ, aaaa)=[]. OK" + WARNING: search term not found: "π‘" + WARNING: search term not found: "π‘" +ECHO: "Expect [] for search(π‘π‘, aaaa)=[]. OK" + WARNING: search term not found: "Π" + WARNING: search term not found: "Π" +ECHO: "Expect [[], []] for search(ΠΠ, aaaa, 0)=[[], []]. OK" + WARNING: search term not found: "π‘" + WARNING: search term not found: "π‘" +ECHO: "Expect [[], []] for search(π‘π‘, aaaa, 0)=[[], []]. OK" +ECHO: "----- Lookup of 1-byte into multi-byte" + WARNING: search term not found: "a" +ECHO: "Expect [] for search(a, ΠΠΠΠ)=[]. OK" + WARNING: search term not found: "a" +ECHO: "Expect [] for search(a, π‘π‘π‘π‘)=[]. OK" + WARNING: search term not found: "a" +ECHO: "Expect [] for search(a, ΠΠΠΠ, 1)=[]. OK" + WARNING: search term not found: "a" +ECHO: "Expect [[]] for search(a, π‘π‘π‘π‘, 0)=[[]]. OK" + WARNING: search term not found: "a" +ECHO: "Expect [[]] for search(a, π‘π‘π‘π‘, 2)=[[]]. OK" +ECHO: "----- Lookup of 1-byte into mixed multi-byte" +ECHO: "Expect [0] for search(a, aΠaΠaΠaΠa)=[0]. OK" +ECHO: "Expect [0] for search(a, aπ‘aπ‘aπ‘aπ‘a)=[0]. OK" +ECHO: "Expect [0] for search(a, aπ‘Ππ‘aπ‘Ππ‘a)=[0]. OK" +ECHO: "Expect [[0, 2, 4, 6, 8]] for search(a, aΠaΠaΠaΠa, 0)=[[0, 2, 4, 6, 8]]. OK" +ECHO: "Expect [[0, 2, 4, 6, 8]] for search(a, aπ‘aπ‘aπ‘aπ‘a, 0)=[[0, 2, 4, 6, 8]]. OK" +ECHO: "Expect [[0, 4, 8]] for search(a, aπ‘Ππ‘aπ‘Ππ‘a, 0)=[[0, 4, 8]]. OK" +ECHO: "----- Lookup of 2-byte into 2-byte" +ECHO: "Expect [0] for search(Π, ΠΠΠΠ)=[0]. OK" +ECHO: "Expect [[0, 1, 2, 3]] for search(Π, ΠΠΠΠ, 0)=[[0, 1, 2, 3]]. OK" +ECHO: "----- Lookup of 2-byte into 4-byte" + WARNING: search term not found: "Π" +ECHO: "Expect [] for search(Π, π‘π‘π‘π‘)=[]. OK" +ECHO: "----- Lookup of 4-byte into 4-byte" +ECHO: "Expect [0] for search(π‘, π‘π‘π‘π‘)=[0]. OK" +ECHO: "Expect [[0, 1, 2, 3]] for search(π‘, π‘π‘π‘π‘, 0)=[[0, 1, 2, 3]]. OK" +ECHO: "----- Lookup of 4-byte into 2-byte" + WARNING: search term not found: "π‘" +ECHO: "Expect [] for search(π‘, ΠΠΠΠ)=[]. OK" +ECHO: "----- Lookup of 2-byte into mixed multi-byte" +ECHO: "Expect [1] for search(Π, aΠaΠaΠaΠa, 1)=[1]. OK" + WARNING: search term not found: "Π" +ECHO: "Expect [] for search(Π, aπ‘aπ‘aπ‘aπ‘a, 1)=[]. OK" +ECHO: "Expect [2] for search(Π, aπ‘Ππ‘aπ‘Ππ‘a, 1)=[2]. OK" +ECHO: "Expect [[1, 3, 5, 7]] for search(Π, aΠaΠaΠaΠa, 0)=[[1, 3, 5, 7]]. OK" + WARNING: search term not found: "Π" +ECHO: "Expect [[]] for search(Π, aπ‘aπ‘aπ‘aπ‘a, 0)=[[]]. OK" +ECHO: "Expect [[2, 6]] for search(Π, aπ‘Ππ‘aπ‘Ππ‘a, 0)=[[2, 6]]. OK" +ECHO: "----- Lookup of 4-byte into mixed multi-byte" + WARNING: search term not found: "π‘" +ECHO: "Expect [] for search(π‘, aΠaΠaΠaΠa, 1)=[]. OK" +ECHO: "Expect [1] for search(π‘, aπ‘aπ‘aπ‘aπ‘a, 1)=[1]. OK" + WARNING: search term not found: "π‘" +ECHO: "Expect [[]] for search(π‘, aΠaΠaΠaΠa, 0)=[[]]. OK" +ECHO: "Expect [[1, 3, 5, 7]] for search(π‘, aπ‘aπ‘aπ‘aπ‘a, 0)=[[1, 3, 5, 7]]. OK" +ECHO: "Expect [[1, 3, 5, 7]] for search(π‘, aπ‘Ππ‘aπ‘Ππ‘a, 0)=[[1, 3, 5, 7]]. OK" +ECHO: "----- Lookup of mixed multi-byte into mixed multi-byte" + WARNING: search term not found: "π‘" +ECHO: "Expect [[0, 2, 4, 6, 8], [1, 3, 5, 7], []] for search(aΠπ‘, aΠaΠaΠaΠa, 0)=[[0, 2, 4, 6, 8], [1, 3, 5, 7], []]. OK" + WARNING: search term not found: "Π" +ECHO: "Expect [[0, 2, 4, 6, 8], [], [1, 3, 5, 7]] for search(aΠπ‘, aπ‘aπ‘aπ‘aπ‘a, 0)=[[0, 2, 4, 6, 8], [], [1, 3, 5, 7]]. OK" +ECHO: "Expect [[0, 4, 8], [2, 6], [1, 3, 5, 7]] for search(aΠπ‘, aπ‘Ππ‘aπ‘Ππ‘a, 0)=[[0, 4, 8], [2, 6], [1, 3, 5, 7]]. OK" +ECHO: "Expect [[1, 3, 5, 7], [0, 4, 8], [2, 6]] for search(π‘aΠ, aπ‘Ππ‘aπ‘Ππ‘a, 0)=[[1, 3, 5, 7], [0, 4, 8], [2, 6]]. OK" diff --git a/tests/regression/echotest/string-unicode-expected.echo b/tests/regression/echotest/string-unicode-expected.echo new file mode 100644 index 0000000..a1cd3be --- /dev/null +++ b/tests/regression/echotest/string-unicode-expected.echo @@ -0,0 +1,107 @@ +ECHO: "text_1bytes_len = ", "1234", " len = ", 4 +ECHO: "text_2bytes_len = ", "ΠΠΠΠ", " len = ", 4 +ECHO: "text_4bytes_len = ", "π‘π±ππ", " len = ", 4 +ECHO: "[", 0, "] = ", "DEADBEEF", " of len=", 8, ":" +ECHO: " [", 0, "]=", "D" +ECHO: " [", 1, "]=", "E" +ECHO: " [", 2, "]=", "A" +ECHO: " [", 3, "]=", "D" +ECHO: " [", 4, "]=", "B" +ECHO: " [", 5, "]=", "E" +ECHO: " [", 6, "]=", "E" +ECHO: " [", 7, "]=", "F" +ECHO: "[", 1, "] = ", "ΠΠ΅Π½ΠΈΠ²ΡΠΉ ΡΡΠΆΠΈΠΉ ΠΊΠΎΡ", " of len=", 17, ":" +ECHO: " [", 0, "]=", "Π" +ECHO: " [", 1, "]=", "Π΅" +ECHO: " [", 2, "]=", "Π½" +ECHO: " [", 3, "]=", "ΠΈ" +ECHO: " [", 4, "]=", "Π²" +ECHO: " [", 5, "]=", "Ρ" +ECHO: " [", 6, "]=", "ΠΉ" +ECHO: " [", 7, "]=", " " +ECHO: " [", 8, "]=", "Ρ" +ECHO: " [", 9, "]=", "Ρ" +ECHO: " [", 10, "]=", "ΠΆ" +ECHO: " [", 11, "]=", "ΠΈ" +ECHO: " [", 12, "]=", "ΠΉ" +ECHO: " [", 13, "]=", " " +ECHO: " [", 14, "]=", "ΠΊ" +ECHO: " [", 15, "]=", "ΠΎ" +ECHO: " [", 16, "]=", "Ρ" +ECHO: "[", 2, "] = ", "ΩΨ³ΩΩ Ψ§ΩΨ²ΩΨ¬Ψ¨ΩΩ Ψ§ΩΩΨ·", " of len=", 18, ":" +ECHO: " [", 0, "]=", "Ω" +ECHO: " [", 1, "]=", "Ψ³" +ECHO: " [", 2, "]=", "Ω" +ECHO: " [", 3, "]=", "Ω" +ECHO: " [", 4, "]=", " " +ECHO: " [", 5, "]=", "Ψ§" +ECHO: " [", 6, "]=", "Ω" +ECHO: " [", 7, "]=", "Ψ²" +ECHO: " [", 8, "]=", "Ω" +ECHO: " [", 9, "]=", "Ψ¬" +ECHO: " [", 10, "]=", "Ψ¨" +ECHO: " [", 11, "]=", "Ω" +ECHO: " [", 12, "]=", "Ω" +ECHO: " [", 13, "]=", " " +ECHO: " [", 14, "]=", "Ψ§" +ECHO: " [", 15, "]=", "Ω" +ECHO: " [", 16, "]=", "Ω" +ECHO: " [", 17, "]=", "Ψ·" +ECHO: "[", 3, "] = ", "ζΆζ°ηε§θ²", " of len=", 5, ":" +ECHO: " [", 0, "]=", "ζΆ" +ECHO: " [", 1, "]=", "ζ°" +ECHO: " [", 2, "]=", "η" +ECHO: " [", 3, "]=", "ε§" +ECHO: " [", 4, "]=", "θ²" +ECHO: "[", 4, "] = ", "Àâü ΓΓΓ Γ", " of len=", 9, ":" +ECHO: " [", 0, "]=", "Γ€" +ECHO: " [", 1, "]=", "ΓΆ" +ECHO: " [", 2, "]=", "ΓΌ" +ECHO: " [", 3, "]=", " " +ECHO: " [", 4, "]=", "Γ" +ECHO: " [", 5, "]=", "Γ" +ECHO: " [", 6, "]=", "Γ" +ECHO: " [", 7, "]=", " " +ECHO: " [", 8, "]=", "Γ" +ECHO: "[", 5, "] = ", "πππππ
πππππππππππ", " of len=", 16, ":" +ECHO: " [", 0, "]=", "π" +ECHO: " [", 1, "]=", "π" +ECHO: " [", 2, "]=", "π" +ECHO: " [", 3, "]=", "π" +ECHO: " [", 4, "]=", "π
" +ECHO: " [", 5, "]=", "π" +ECHO: " [", 6, "]=", "π" +ECHO: " [", 7, "]=", "π" +ECHO: " [", 8, "]=", "π" +ECHO: " [", 9, "]=", "π" +ECHO: " [", 10, "]=", "π" +ECHO: " [", 11, "]=", "π" +ECHO: " [", 12, "]=", "π" +ECHO: " [", 13, "]=", "π" +ECHO: " [", 14, "]=", "π" +ECHO: " [", 15, "]=", "π" +ECHO: "[", 6, "] = ", "β β β β β
β β β β β β β β β β ", " of len=", 15, ":" +ECHO: " [", 0, "]=", "β " +ECHO: " [", 1, "]=", "β " +ECHO: " [", 2, "]=", "β " +ECHO: " [", 3, "]=", "β " +ECHO: " [", 4, "]=", "β
" +ECHO: " [", 5, "]=", "β " +ECHO: " [", 6, "]=", "β " +ECHO: " [", 7, "]=", "β " +ECHO: " [", 8, "]=", "β " +ECHO: " [", 9, "]=", "β " +ECHO: " [", 10, "]=", "β " +ECHO: " [", 11, "]=", "β " +ECHO: " [", 12, "]=", "β " +ECHO: " [", 13, "]=", "β " +ECHO: " [", 14, "]=", "β " +ECHO: "[", 7, "] = ", "π‘π±ππ", " of len=", 4, ":" +ECHO: " [", 0, "]=", "π‘" +ECHO: " [", 1, "]=", "π±" +ECHO: " [", 2, "]=", "π" +ECHO: " [", 3, "]=", "π" +ECHO: "Past end of unicode only 2-byte ", undef +ECHO: "Past end of unicode only 4-byte ", undef +ECHO: "Past end of both 2-byte ", undef +ECHO: "Past end of both 4-byte ", undef |