class ZSTRING_CONVERTABLE_TEST_SET
Testing class EL_CONVERTABLE_ZSTRING
note
description: "Testing class ${EL_CONVERTABLE_ZSTRING}"
author: "Finnian Reilly"
copyright: "Copyright (c) 2001-2022 Finnian Reilly"
contact: "finnian at eiffel hyphen loop dot com"
license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
date: "2024-09-20 8:19:34 GMT (Friday 20th September 2024)"
revision: "6"
class
ZSTRING_CONVERTABLE_TEST_SET
inherit
ZSTRING_EQA_TEST_SET
feature {NONE} -- Initialization
make
-- initialize `test_table'
do
make_named (<<
["split", agent test_split],
["to_latin_1", agent test_to_latin_1],
["to_string_32", agent test_to_string_32],
["to_utf_8", agent test_to_utf_8]
>>)
end
feature -- Tests
test_split
note
testing: "[
covers/{EL_READABLE_ZSTRING}.substring,
covers/{EL_CONVERTABLE_ZSTRING}.split,
covers/{EL_SEARCHABLE_ZSTRING}.index_of
]"
local
list: LIST [ZSTRING]; list_32: LIST [STRING_32]
test: STRING_TEST; i: INTEGER
do
create test
across Text.lines_32 as line loop
test.set (line.item)
from i := 1 until i > 3 loop
list := test.zs.split_list (test.s_32 [i])
list_32 := test.s_32.split (test.s_32 [i])
assert ("same count", list.count = list_32.count)
if list.count = list_32.count then
assert ("same content", across list as ls all ls.item.same_string (list_32.i_th (ls.cursor_index)) end)
end
i := i + 1
end
end
end
test_to_latin_1
-- ZSTRING_CONVERTABLE_TEST_SET.test_to_latin_1
note
testing: "[
covers/{EL_CONVERTABLE_ZSTRING}.to_latin_1,
covers/{EL_CONVERTABLE_ZSTRING}.to_string_8
]"
local
str: ZSTRING; str_32: STRING_32
do
across Text.lines_32 as line loop
str_32 := line.item
if str_32.is_valid_as_string_8 then
str := str_32
assert ("same string", str.to_latin_1 ~ str_32.to_string_8)
end
end
end
test_to_string_32
-- ZSTRING_CONVERTABLE_TEST_SET.test_to_string_32
note
testing: "[
covers/{EL_CONVERTABLE_ZSTRING}.to_string_32,
covers/{EL_READABLE_ZSTRING}.make_from_general,
covers/{EL_COMPARABLE_ZSTRING}.same_characters_general
]"
local
test: STRING_TEST
do
create test
across Text.lines_32 as line loop
test.set (line.item)
assert ("strings the same", test.is_same)
assert ("to_string_32 is_equal", test.zs.to_string_32 ~ line.item)
end
end
test_to_utf_8
-- ZSTRING_CONVERTABLE_TEST_SET.test_to_utf_8
note
testing: "[
covers/{EL_CONVERTABLE_ZSTRING}.to_utf_8,
covers/{EL_ZSTRING_IMPLEMENTATION}.leading_ascii_count,
covers/{EL_WRITEABLE_ZSTRING}.append_to_utf_8,
covers/{EL_READABLE_ZSTRING}.make_from_utf_8
]"
local
z_word, z_str: ZSTRING; utf_8: STRING; conv: EL_UTF_8_CONVERTER
do
create utf_8.make_empty
across Text.lines_32 as line loop
utf_8.wipe_out
across line.item.split (' ') as word loop
if word.cursor_index > 1 then
utf_8.append_character (' ')
end
z_word := word.item
z_word.append_to_utf_8 (utf_8)
end
if attached conv.string_32_to_string_8 (line.item) as line_utf_8 then
assert_same_string (Void, utf_8, line_utf_8)
z_str := line.item
assert_same_string (Void, z_str.to_utf_8, line_utf_8)
end
end
end
end