mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 23:00:17 +00:00
95 lines
2.6 KiB
Plaintext
95 lines
2.6 KiB
Plaintext
/*
|
|
* @progname st_convert.li
|
|
* @version 1.01 (2002-12-14)
|
|
* @author Perry Rapp
|
|
* @category self-test
|
|
* @output none
|
|
* @description
|
|
*
|
|
* validate codeset conversion
|
|
*
|
|
*/
|
|
|
|
char_encoding("ASCII")
|
|
|
|
require("lifelines-reports.version:1.3")
|
|
option("explicitvars") /* Disallow use of undefined variables */
|
|
include("st_aux")
|
|
|
|
/* entry point in case not invoked via st_all.ll */
|
|
proc main()
|
|
{
|
|
call testConvert()
|
|
}
|
|
|
|
proc testConvert()
|
|
{
|
|
call initSubsection()
|
|
call convert_tests()
|
|
call reportSubsection("convert tests")
|
|
}
|
|
|
|
proc convert_tests()
|
|
{
|
|
/* we have to use bytecodes, b/c any non-ascii will be
|
|
first converted by the report parser to internal codeset,
|
|
which depends on the current database :( */
|
|
|
|
/* trivial test */
|
|
call checkconv("silver fox", "UTF-8", "silver fox", "ISO-8859-1")
|
|
call checkconv("silver fox", "UTF-8", "silver fox", "ISO-8859-2")
|
|
|
|
/* LATIN SMALL LETTER N WITH TILDE u000F1 */
|
|
call checkconv("$C3$B1", "UTF-8", "$F1", "ISO-8859-1")
|
|
|
|
/* LATIN SMALL LETTER A WITH ACUTE u000E1 */
|
|
call checkconv("$C3$A1", "UTF-8", "$E1", "ISO-8859-1")
|
|
call checkconv("$C3$A1", "UTF-8", "$E1", "ISO-8859-2")
|
|
call checkconv("$C3$A1", "UTF-8", "$E1", "ISO-8859-3")
|
|
call checkconv("$C3$A1", "UTF-8", "$E1", "ISO-8859-4")
|
|
call checkconv("$C3$A1", "UTF-8", "$E1", "ISO-8859-15")
|
|
|
|
/* LATIN CAPITAL LETTER L WITH STROKE u00141 */
|
|
call checkconv("$C5$81", "UTF-8", "$A3", "ISO-8859-2")
|
|
call checkconv("$C5$81", "UTF-8", "$A1", "ANSEL")
|
|
|
|
/* LATIN SMALL LETTER S WITH CEDILLA u0015F */
|
|
call checkconv("$C5$9F", "UTF-8", "$BA", "ISO-8859-2")
|
|
call checkconv("$C5$9F", "UTF-8", "$BA", "ISO-8859-3")
|
|
|
|
/* LATIN SMALL LETTER G WITH CEDILLA u00123 */
|
|
call checkconv("$C4$A3", "UTF-8", "$BB", "ISO-8859-4")
|
|
|
|
/* LATIN SMALL LETTER AE u000E6 */
|
|
call checkconv("$C3$A6", "UTF-8", "$E6", "ISO-8859-1")
|
|
call checkconv("$C3$A6", "UTF-8", "$B5", "ANSEL")
|
|
|
|
/* LATIN CAPITAL LETTER N WITH CARON */
|
|
call checkconv("$C5$87", "UTF-8", "$D2", "ISO-8859-2")
|
|
|
|
/* LATIN CAPITAL LETTER THORN u000DE */
|
|
call checkconv("$C3$9E", "UTF-8", "$DE", "ISO-8859-1")
|
|
call checkconv("$C3$9E", "UTF-8", "$A4", "ANSEL")
|
|
}
|
|
|
|
/* test a conversion and its reverse */
|
|
proc checkconv(bc1, cs1, bc2, cs2)
|
|
{
|
|
call checkconv_1way(bc1, cs1, bc2, cs2)
|
|
call checkconv_1way(bc2, cs2, bc1, cs1)
|
|
}
|
|
|
|
/* test a single conversion */
|
|
proc checkconv_1way(bc1, cs1, bc2, cs2)
|
|
{
|
|
set(str1, bytecode(bc1, "raw"))
|
|
set(str2, bytecode(bc2, "raw"))
|
|
if (ne(convertcode(str1, cs1, cs2), str2)) {
|
|
set(fstr, concat("convertcode(bytecode(", bc1
|
|
, ",raw),", cs1, ",", cs2
|
|
, ") <> bytecode(", bc2, ",raw) FAILURE"))
|
|
call reportfail(fstr)
|
|
} else { incr(testok) }
|
|
}
|
|
|