2017-02-17 05:27:54 +08:00
/*
2018-12-07 05:56:42 +08:00
* Copyright 1998 - 2018 University Corporation for Atmospheric Research / Unidata
2017-02-17 05:27:54 +08:00
* See the LICENSE file for more information .
*/
# include <config.h>
# include <stdlib.h>
# include <nc_tests.h>
# include <netcdf.h>
# include <string.h>
# include "ncutf8.h"
/*
The test here are taken from the UTF - 8 SAMPLER
Frank da Cruz
The Kermit Project < http : //kermitproject.org/index.html>
New York City
fdc @ kermitproject . org < mailto : fdc @ kermitproject . org >
/ Last update : / Tue Jan 31 16 : 56 : 13 2017
*/
struct Test {
int xfail ;
const char * id ;
const char * description ;
const char * data ;
} ;
# define NULLTEST {0,NULL,NULL,NULL}
static const struct Test utf8currency [ ] = {
{ 0 , " 1.1 " , " Currencies " , " ¥£€$¢₡₢₣₤₥₦₧₨₩₪₫₭₮₯₹ " } ,
NULLTEST
} ;
static const struct Test utf8poems [ ] = {
{ 0 , " 2.1 " , " Runes " ,
" ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ \n ᛋᚳᛖᚪᛚ᛫ᚦᛖᚪᚻ᛫ᛗᚪᚾᚾᚪ᛫ᚷᛖᚻᚹᛦᛚᚳ᛫ᛗᛁᚳᛚᚢᚾ᛫ᚻᛦᛏ᛫ᛞᚫᛚᚪᚾ \n ᚷᛁᚠ᛫ᚻᛖ᛫ᚹᛁᛚᛖ᛫ᚠᚩᚱ᛫ᛞᚱᛁᚻᛏᚾᛖ᛫ᛞᚩᛗᛖᛋ᛫ᚻᛚᛇᛏᚪᚾ᛬ \n "
} ,
{ 0 , " 2.2 " , " Middle English " ,
" An preost wes on leoden, Laȝamon was ihoten "
" He wes Leovenaðes sone -- liðe him be Drihten. "
" He wonede at Ernleȝe at æðelen are chirechen, "
" Uppen Sevarne staþe, sel þar him þuhte, "
" Onfest Radestone, þer he bock radde. "
} ,
{ 0 , " 2.3 " , " Middle High German " ,
" Sîne klâwen durh die wolken sint geslagen, "
" er stîget ûf mit grôzer kraft, "
" ich sih in grâwen tägelîch als er wil tagen, "
" den tac, der im geselleschaft "
" erwenden wil, dem werden man, "
" den ich mit sorgen în verliez. "
" ich bringe in hinnen, ob ich kan. "
" sîn vil manegiu tugent michz leisten hiez. "
} ,
{ 0 , " 2.4 " ,
" Greek.1 " ,
" Τη γλώσσα μου έδωσαν ελληνικ το σπίτι φτωχικό στις αμμουδιές του Ομήρου. Μονάχη έγνοια η γλώσσα μου στις αμμουδιές του Ομήρου. από το Άξιον Εστί του Οδυσσέα Ελύτη "
} ,
{ 0 , " 2.5 " ,
" Greek.2 " ,
" Τὴ γλῶσσα μοῦ ἔδωσαν ἑλληνικὴτὸ σπίτι φτωχικὸ στὶς ἀμμουδιὲς τοῦ Ὁμήρου. Μονάχη ἔγνοια ἡ γλῶσσα μου στὶς ἀμμουδιὲς τοῦ Ὁμήρου.ἀπὸ τὸ Ἄξιον ἐστί τοῦ Ὀδυσσέα Ἐλύτη "
} ,
{ 0 , " 2.6 " ,
2019-09-18 10:27:43 +08:00
" Russian " ,
2017-02-17 05:27:54 +08:00
" Н а б е р е г у пустынных волнСтоял он, дум великих полн,И вдаль глядел. Пред ним широкоРека неслася; бедный чёлнПо ней стремился одиноко.По мшистым, топким берегамЧернели избы здесь и там,Приют у б о г о г о чухонца;И лес, неведомый лучамВ тумане спрятанного солнца, Кругом шумел."
} ,
{ 0 , " 2.7 " ,
" Georgian " ,
" ვეპხის ტყაოსანი შოთა რუსთაველიღმერთსი შემვედრე, ნუთუ კვლა დამხსნას სოფლისა შრომასა, ცეცხლს, წყალსადა მიწასა, ჰაერთა თანა მრომასა; მომცნეს ფრთენი და აღვფრინდე,მივჰხვდე მას ჩემსა ნდომასა, დღისით და ღამით ვჰხედვიდე მზისა ელვათა კრთომაასა. "
} ,
{ 0 , " 2.8 " ,
" Tamil.1 " ,
" யாமறிந்த மொழிகளிலே தமிழ்மொழி போல் இனிதாவது எங்கும் காணோம்,பாமரராய் விலங்குகளாய், உலகனைத்தும் இகழ்ச்சிசொலப் பான்மை கெட்டு,நாமமது தமிழரெனக் கொண்டு இங்கு வாழ்ந்திடுதல் நன்றோ? சொல்லீர்! தேமதுரத் தமிழோசை உலகமெலாம் பரவும்வகை செய்தல் வேண்டும். "
} ,
{ 0 , " 2.9 " ,
" Tamil.2 " ,
" ಬಾ ಇಲ್ಲಿ ಸಂಭವಿಸು ಇಂದೆನ್ನ ಹೃದಯದಲಿನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರಮಣ್ಣಾಗಿ ಮರವಾಗಿ ಮಿಗವಾಗಿ ಕಗವಾಗೀ...ಮಣ್ಣಾಗಿ ಮರವಾಗಿ ಮಿಗವಾಗಿ ಕಗವಾಗಿಭವ ಭವದಿ ಭತಿಸಿಹೇ ಭವತಿ ದೂರ ನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರ || ಬಾ ಇಲ್ಲಿ || "
} ,
NULLTEST
} ;
static const struct Test utf8phrases1 [ ] = {
{ 0 , " 3.1 " , " Sanskrit " , " काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥ " } ,
{ 0 , " 3.2 " , " Sanskrit/(standard transcription) " , " kācaṃ śaknomyattum nopahinasti mām. " } ,
{ 0 , " 3.3 " , " Classical Greek " , " ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει. " } ,
{ 0 , " 3.4 " , " Greek (monotonic) " , " Μπορώ ν α φάω σπασμένα γυαλιά χωρίς ν α πάθω τίποτα. " } ,
{ 0 , " 3.5 " , " Greek (polytonic) " , " Μπορῶ νὰ φάω σπασμένα γυαλιὰ χωρὶς νὰ πάθω τίποτα. " } ,
{ 0 , " 3.6 " , " Latin " , " Vitrum edere possum; mihi non nocet. " } ,
{ 0 , " 3.7 " , " Old French " , " Je puis mangier del voirre. Ne me nuit. " } ,
{ 0 , " 3.8 " , " French " , " Je peux manger du verre, ça ne me fait pas mal. " } ,
{ 0 , " 3.9 " , " Provençal / Occitan " , " Pòdi manjar de veire, me nafrariá pas. " } ,
{ 0 , " 3.10 " , " Québécois " , " J'peux manger d'la vitre, ça m'fa pas mal. " } ,
{ 0 , " 3.11 " , " Walloon " , " Dji pou magnî do vêre, çoula m' freut nén må. " } ,
{ 0 , " 3.12 " , " Picard " , " Ch'peux mingi du verre, cha m'foé mie n'ma. " } ,
{ 0 , " 3.13 " , " Kreyòl Ayisyen (Haitï) " , " Mwen kap manje vè, li pa blese'm. " } ,
{ 0 , " 3.14 " , " Basque " , " Kristala jan dezaket, ez dit minik ematen. " } ,
{ 0 , " 3.15 " , " Catalan / Català " , " Puc menjar vidre, que no em fa mal. " } ,
{ 0 , " 3.16 " , " Spanish " , " Puedo comer vidrio, no me hace daño. " } ,
{ 0 , " 3.17 " , " Aragonés " , " Puedo minchar beire, no me'n fa mal . " } ,
{ 0 , " 3.18 " , " Galician " , " Eu podo xantar cristais e non cortarme. " } ,
{ 0 , " 3.19 " , " European Portuguese " , " Posso comer vidro, não me faz mal. " } ,
{ 0 , " 3.20 " , " Brazilian Portuguese (8 <#notes>) " , " Posso comer vidro, não me machuca. " } ,
{ 0 , " 3.21 " , " Caboverdiano/Kabuverdianu (Cape Verde) " , " M' podê cumê vidru, ca ta maguâ-m'. " } ,
{ 0 , " 3.22 " , " Papiamentu " , " Ami por kome glas anto e no ta hasimi daño. " } ,
{ 0 , " 3.23 " , " Italian " , " Posso mangiare il vetro e non mi fa male. " } ,
{ 0 , " 3.24 " , " Milanese " , " Sôn bôn de magnà el véder, el me fa minga mal. " } ,
{ 0 , " 3.25 " , " Roman " , " Me posso magna' er vetro, e nun me fa male. " } ,
{ 0 , " 3.26 " , " Napoletano " , " M' pozz magna' o'vetr, e nun m' fa mal. " } ,
{ 0 , " 3.27 " , " Venetian " , " Mi posso magnare el vetro, no'l me fa mae. " } ,
{ 0 , " 3.28 " , " Zeneise /(Genovese) " , " / Pòsso mangiâ o veddro e o no me fà mâ. " } ,
{ 0 , " 3.29 " , " Sicilian " , " Puotsu mangiari u vitru, nun mi fa mali. " } ,
{ 0 , " 3.30 " , " Romansch (Grischun) " , " Jau sai mangiar vaider, senza che quai fa donn a mai. " } ,
{ 0 , " 3.31 " , " Romanian " , " Pot să mănânc sticlă și ea nu mă rănește. " } ,
{ 0 , " 3.32 " , " Esperanto " , " Mi povas manĝi vitron, ĝi ne damaĝas min. " } ,
{ 0 , " 3.33 " , " Cornish " , " Mý a yl dybry gwéder hag éf ny wra ow ankenya. " } ,
{ 0 , " 3.34 " , " Welsh " , " Dw i'n gallu bwyta gwydr, 'dyw e ddim yn gwneud dolur i mi. " } ,
{ 0 , " 3.35 " , " Manx Gaelic " , " Foddym gee glonney agh cha jean eh gortaghey mee. " } ,
{ 0 , " 3.36 " , " Old Irish /(Ogham) " , " / ᚛᚛ᚉᚑᚅᚔᚉᚉᚔᚋ ᚔᚈᚔ ᚍᚂᚐᚅᚑ ᚅᚔᚋᚌᚓᚅᚐ᚜ " } ,
{ 0 , " 3.37 " , " Old Irish /(Latin) " , " / Con·iccim ithi nglano. Ním·géna. " } ,
{ 0 , " 3.38 " , " Irish " , " Is féidir liom gloinne a ithe. Ní dhéanann sí dochar ar bith dom. " } ,
{ 0 , " 3.39 " , " Ulster Gaelic " , " Ithim-sa gloine agus ní miste damh é. " } ,
{ 0 , " 3.40 " , " Scottish Gaelic " , " S urrainn dhomh gloinne ithe; cha ghoirtich i mi. " } ,
{ 0 , " 3.41 " , " Anglo-Saxon /(Runes) " , " / ᛁᚳ᛫ᛗᚨᚷ᛫ᚷᛚᚨᛋ᛫ᛖᚩᛏᚪᚾ᛫ᚩᚾᛞ᛫ᚻᛁᛏ᛫ᚾᛖ᛫ᚻᛖᚪᚱᛗᛁᚪᚧ᛫ᛗᛖ᛬ " } ,
{ 0 , " 3.42 " , " Anglo-Saxon /(Latin) " , " / Ic mæg glæs eotan ond hit ne hearmiað me. " } ,
{ 0 , " 3.43 " , " Middle English " , " Ich canne glas eten and hit hirtiþ me nouȝt. " } ,
{ 0 , " 3.44 " , " English " , " I can eat glass and it doesn't hurt me. " } ,
{ 0 , " 3.45 " , " English /(IPA) " , " / [aɪ kæn iː t glɑ ː s ænd ɪ t dɐz nɒt hɜː t miː ] " } ,
{ 0 , " 3.46 " , " English /(Braille) " , " / ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑ " } ,
{ 0 , " 3.47 " , " Jamaican " , " Mi kian niam glas han i neba hot mi. " } ,
{ 0 , " 3.48 " , " Lalland Scots / Doric " , " Ah can eat gless, it disnae hurt us. " } ,
{ 0 , " 3.49 " , " Gothic (4) " , " 𐌼𐌰𐌲 𐌲𐌻𐌴𐍃 𐌹̈𐍄𐌰𐌽, 𐌽𐌹 𐌼𐌹𐍃 𐍅𐌿 𐌽𐌳𐌰𐌽 𐌱𐍂𐌹𐌲𐌲𐌹𐌸. " } ,
{ 0 , " 3.50 " , " Old Norse /(Runes) " , " / ᛖᚴ ᚷᛖᛏ ᛖᛏᛁ ᚧ ᚷᛚᛖᚱ ᛘᚾ ᚦᛖᛋᛋ ᚨᚧ ᚡᛖ ᚱᚧᚨ ᛋᚨᚱ " } ,
{ 0 , " 3.51 " , " Old Norse /(Latin) " , " / Ek get etið gler án þess að verða sár. " } ,
{ 0 , " 3.52 " , " Norsk / Norwegian (Nynorsk) " , " Eg kan eta glas utan å skada meg. " } ,
{ 0 , " 3.53 " , " Norsk / Norwegian (Bokmål) " , " Jeg kan spise glass uten å skade meg. " } ,
{ 0 , " 3.54 " , " Føroyskt / Faroese " , " Eg kann eta glas, skaðaleysur. " } ,
{ 0 , " 3.55 " , " Íslenska / Icelandic " , " Ég get etið gler án þess að meiða mig. " } ,
{ 0 , " 3.56 " , " Svenska / Swedish " , " Jag kan äta glas utan att skada mig. " } ,
{ 0 , " 3.57 " , " Dansk / Danish " , " Jeg kan spise glas, det gør ikke ondt på mig. " } ,
{ 0 , " 3.58 " , " Sønderjysk " , " Æ ka æe glass uhen at det go mæ naue. " } ,
{ 0 , " 3.59 " , " Frysk / Frisian " , " Ik kin glês ite, it docht me net sear. " } ,
{ 0 , " 3.60 " , " Nederlands / Dutch " , " Ik kan glas eten, het doet mij geen kwaad. " } ,
{ 0 , " 3.61 " , " Kirchröadsj/Bôchesserplat " , " Iech ken glaas èèse, mer 't deet miech jing pieng. " } ,
{ 0 , " 3.62 " , " Afrikaans " , " Ek kan glas eet, maar dit doen my nie skade nie. " } ,
{ 0 , " 3.63 " , " Lëtzebuergescht / Luxemburgish " , " Ech kan Glas iessen, daat deet mir nët wei. " } ,
{ 0 , " 3.64 " , " Deutsch / German " , " Ich kann Glas essen, ohne mir zu schaden. " } ,
{ 0 , " 3.65 " , " Ruhrdeutsch " , " Ich kann Glas verkasematuckeln, ohne dattet mich wat jucken tut. " } ,
{ 0 , " 3.66 " , " Langenfelder Platt " , " Isch kann Jlaas kimmeln, uuhne datt mich datt weh dääd. " } ,
{ 0 , " 3.67 " , " Lausitzer Mundart (Lusatian) " , " Ich koann Gloos assn und doas dudd merr ni wii. " } ,
{ 0 , " 3.68 " , " Odenwälderisch " , " Iech konn glaasch voschbachteln ohne dass es mir ebbs daun doun dud. " } ,
{ 0 , " 3.69 " , " Sächsisch / Saxon " , " 'sch kann Glos essn, ohne dass'sch mer wehtue. " } ,
{ 0 , " 3.70 " , " Pfälzisch " , " Isch konn Glass fresse ohne dasses mer ebbes ausmache dud. " } ,
{ 0 , " 3.71 " , " Schwäbisch / Swabian " , " I kå Glas frässa, ond des macht mr nix! " } ,
{ 0 , " 3.72 " , " Deutsch (Voralberg) " , " I ka glas eassa, ohne dass mar weh tuat. " } ,
{ 0 , " 3.73 " , " Bayrisch / Bavarian " , " I koh Glos esa, und es duard ma ned wei. " } ,
{ 0 , " 3.74 " , " Allemannisch " , " I kaun Gloos essen, es tuat ma ned weh. " } ,
{ 0 , " 3.75 " , " Schwyzerdütsch (Zürich) " , " Ich chan Glaas ässe, das schadt mir nöd. " } ,
{ 0 , " 3.76 " , " Schwyzerdütsch (Luzern) " , " Ech cha Glâs ässe, das schadt mer ned. " } ,
{ 0 , " 3.77 " , " Hungarian " , " Meg tudom enni az üveget, nem lesz tőle bajom. " } ,
{ 0 , " 3.78 " , " Suomi / Finnish " , " Voin syödä lasia, se ei vahingoita minua. " } ,
{ 0 , " 3.79 " , " Sami (Northern) " , " Sáhtán borrat lása, dat ii leat bávččas. " } ,
{ 0 , " 3.80 " , " Erzian " , " Мон ярсан суликадо, ды зыян эйстэнзэ а ули. " } ,
{ 0 , " 3.81 " , " Northern Karelian " , " Mie voin syvvä lasie ta minla ei ole kipie. " } ,
{ 0 , " 3.82 " , " Southern Karelian " , " Minä voin syvvä st'oklua dai minule ei ole kibie. " } ,
{ 0 , " 3.83 " , " Estonian " , " Ma võin klaasi süüa, see ei tee mulle midagi. " } ,
{ 0 , " 3.84 " , " Latvian " , " Es varu ēst stiklu, tas man nekaitē. " } ,
{ 0 , " 3.85 " , " Lithuanian " , " Aš galiu valgyti stiklą ir jis manęs nežeidžia " } ,
{ 0 , " 3.86 " , " Czech " , " Mohu jíst sklo, neublíží mi. " } ,
{ 0 , " 3.87 " , " Slovak " , " Môžem jesť sklo. Nezraní ma. " } ,
{ 0 , " 3.88 " , " Polska / Polish " , " Mogę jeść szkło i mi nie szkodzi. " } ,
{ 0 , " 3.89 " , " Slovenian " , " Lahko jem steklo, ne da bi mi škodovalo. " } ,
{ 0 , " 3.90 " , " Bosnian, Croatian, Montenegrin and Serbian /(Latin)/ " , " Ja mogu jesti staklo, i to mi ne šteti. " } ,
{ 0 , " 3.91 " , " Bosnian, Montenegrin and Serbian /(Cyrillic)/ " , " Ј а могу јести стакло, и то ми не штети." } ,
{ 0 , " 3.92 " , " Macedonian " , " Можам да јадам стакло, а не ме штета. " } ,
{ 0 , " 3.93 " , " Russian " , " Я могу есть стекло, оно мне не вредит. " } ,
{ 0 , " 3.94 " , " Belarusian /(Cyrillic) " , " Я магу есці шкло, яно мне не шкодзіць. " } ,
{ 0 , " 3.95 " , " Belarusian /(Lacinka) " , " Ja mahu jeści škło, jano mne ne škodzić. " } ,
{ 0 , " 3.96 " , " Ukrainian " , " Я можу їсти скло, і воно мені не зашкодить. " } ,
{ 0 , " 3.97 " , " Bulgarian " , " М о г а да ям стъкло, то не ми вреди." } ,
{ 0 , " 3.98 " , " Georgian " , " მინას ვჭამ და არა მტკივა. " } ,
{ 0 , " 3.99 " , " Armenian " , " Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։ " } ,
{ 0 , " 3.100 " , " Albanian " , " Unë mund të ha qelq dhe nuk më gjen gjë. " } ,
{ 0 , " 3.101 " , " Turkish " , " Cam yiyebilirim, bana zararı dokunmaz. " } ,
{ 0 , " 3.102 " , " Turkish /(Ottoman) " , " جام ييه بلورم بڭا ضررى طوقونمز " } ,
{ 0 , " 3.103 " , " Uzbek / O’ zbekcha /(Roman) " , " Men shisha yeyishim mumkin, ammo u menga zarar keltirmaydi. " } ,
{ 0 , " 3.104 " , " Uzbek / Ўзбекча /(Cyrillic)/ " , " Мен шиша ейишим мумкин, аммо у менга зарар келтирмайди " } ,
{ 0 , " 3.105 " , " Bangla / Bengali " , " আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না। " } ,
{ 0 , " 3.106 " , " Marathi " , " मी काच खाऊ शकतो, मला ते दुखत नाही. " } ,
{ 0 , " 3.107 " , " Kannada " , " ನನಗೆ ಹಾನಿ ಆಗದೆ, ನಾನು ಗಜನ್ನು ತಿನಬಹುದು " } ,
{ 0 , " 3.108 " , " Hindi " , " मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती. " } ,
{ 0 , " 3.109 " , " Malayalam " , " എനിക്ക് ഗ്ലാസ് തിന്നാം. അതെന്നെ വേദനിപ്പിക്കില്ല. " } ,
{ 0 , " 3.110 " , " Tamil " , " நான் கண்ணாடி சாப்பிடுவேன், அதனால் எனக்கு ஒரு கேடும் வராது. " } ,
{ 0 , " 3.111 " , " Telugu " , " నేను గాజు తినగలను మరియు అలా చేసినా నాకు ఏమి ఇబ్బంది లేదు " } ,
{ 0 , " 3.112 " , " Sinhalese " , " මට වීදුරු කෑමට හැකියි. එයින් මට කිසි හානියක් සිදු නොවේ. " } ,
{ 0 , " 3.113 " , " Urdu(3) " , " میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔ " } ,
{ 0 , " 3.114 " , " Pashto(3) " , " زه شيشه خوړلې شم، هغه ما نه خوږوي " } ,
{ 0 , " 3.115 " , " Farsi / Persian(3) " , " .من می توانم بدونِ احساس درد شيشه بخورم " } ,
{ 0 , " 3.116 " , " Arabic(3) " , " أنا قادر على أكل الزجاج و هذا لا يؤلمني. " } ,
{ 0 , " 3.117 " , " Maltese " , " Nista' niekol il-ħġieġ u ma jagħmilli xejn. " } ,
{ 0 , " 3.118 " , " Hebrew(3) " , " אני יכול לאכול זכוכית וזה לא מזיק לי. " } ,
{ 0 , " 3.119 " , " Yiddish(3) " , " איך קען עסן גלאָז און עס ט ו ט מיר נישט װײ. " } ,
{ 0 , " 3.120 " , " Twi " , " Metumi awe tumpan, ɜnyɜ me hwee. " } ,
{ 0 , " 3.121 " , " Hausa (/Latin/) " , " Inā iya taunar gilāshi kuma in gamā lāfiyā. " } ,
{ 0 , " 3.122 " , " Hausa (/Ajami/) (2) " , " إِنا إِىَ تَونَر غِلَاشِ كُمَ إِن غَمَا لَافِىَا " } ,
{ 0 , " 3.123 " , " Yoruba(4) " , " Mo lè je̩ dígí, kò ní pa mí lára. " } ,
{ 0 , " 3.124 " , " Lingala " , " Nakokí kolíya biténi bya milungi, ekosála ngáí mabé tɛ́. " } ,
{ 0 , " 3.125 " , " (Ki)Swahili " , " Naweza kula bilauri na sikunyui. " } ,
{ 0 , " 3.126 " , " Malay " , " Saya boleh makan kaca dan ia tidak mencederakan saya. " } ,
{ 0 , " 3.127 " , " Tagalog " , " Kaya kong kumain nang bubog at hindi ako masaktan. " } ,
{ 0 , " 3.128 " , " Chamorro " , " Siña yo' chumocho krestat, ti ha na'lalamen yo'. " } ,
{ 0 , " 3.129 " , " Fijian " , " Au rawa ni kana iloilo, ia au sega ni vakacacani kina. " } ,
{ 0 , " 3.130 " , " Javanese " , " Aku isa mangan beling tanpa lara. " } ,
{ 0 , " 3.131 " , " Burmese (Unicode 4.0) " , " က္ယ္ဝန္တော္၊က္ယ္ဝန္မ မ္ယက္စားနုိင္သည္။ ၎က္ရောင့္ ထိခုိက္မ္ဟု မရ္ဟိပာ။ " } ,
{ 0 , " 3.132 " , " Burmese (Unicode 5.0) " , " ကျွန်တော် ကျွန်မ မှန်စားနိုင်တယ်။ ၎င်းကြောင့် ထိခိုက်မှုမရှိပါ။ " } ,
{ 0 , " 3.133 " , " Vietnamese (quốc ngữ) " , " Tôi có thể ăn thủy tinh mà không hại gì. " } ,
{ 0 , " 3.134 " , " Vietnamese (nôm) (4) " , " 些 𣎏 世 咹 水 晶 𦓡 空 𣎏 害 咦 " } ,
{ 0 , " 3.135 " , " Khmer " , " ខ្ញុំអាចញុំកញ្ចក់បាន ដោយគ្មានបញ្ហារ " } ,
{ 0 , " 3.136 " , " Lao " , " ຂອ້ຍກິນແກ້ວໄດ້ໂດຍທີ່ມັນບໍ່ໄດ້ເຮັດໃຫ້ຂອ້ຍເຈັບ. " } ,
{ 0 , " 3.137 " , " Thai " , " ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ " } ,
{ 0 , " 3.138 " , " Mongolian /(Cyrillic) " , " Би шил идэй чадна, надад хортой биш " } ,
{ 0 , " 3.139 " , " Mongolian /(Classic)/ (5) " , " ᠪᠢ ᠰᠢᠯᠢ ᠢᠳᠡᠶᠦ ᠴᠢᠳᠠᠨᠠ ᠂ ᠨᠠᠳᠤᠷ ᠬᠣᠤᠷᠠᠳᠠᠢ ᠪᠢᠰᠢ " } ,
{ 0 , " 3.140 " , " Nepali " , " म काँच खान सक्छू र मलाई केहि नी हुन्न् । " } ,
{ 0 , " 3.141 " , " Tibetan " , " ཤེལ་སྒོ་ཟ་ནས་ང་ན་གི་མ་རེད། " } ,
{ 0 , " 3.142 " , " Chinese " , " 我能吞下玻璃而不伤身体。 " } ,
{ 0 , " 3.143 " , " Chinese (Traditional) " , " 我能吞下玻璃而不傷身體。 " } ,
{ 0 , " 3.144 " , " Taiwanese(6) " , " Góa ē-tàng chia̍h po-lê, mā bē tio̍h-siong. " } ,
{ 0 , " 3.145 " , " Japanese " , " 私はガラスを食べられます。それは私を傷つけません。 " } ,
{ 0 , " 3.146 " , " Korean " , " 나는 유리를 먹을 수 있어요. 그래도 아프지 않아요 " } ,
{ 0 , " 3.147 " , " Bislama " , " Mi save kakae glas, hemi no save katem mi. " } ,
{ 0 , " 3.148 " , " Hawaiian " , " Hiki iaʻ u ke ʻ ai i ke aniani; ʻ aʻ ole nō lā au e ʻ eha. " } ,
{ 0 , " 3.149 " , " Marquesan " , " E koʻ ana e kai i te karahi, mea ʻā, ʻ aʻ e hauhau. " } ,
{ 0 , " 3.150 " , " Inuktitut (10) " , " ᐊᓕᒍᖅ ᓂᕆᔭᕌᖓᒃᑯ ᓱᕋᙱᑦᑐᓐᓇᖅᑐᖓ " } ,
{ 0 , " 3.151 " , " Chinook Jargon " , " Naika məkmək kakshət labutay, pi weyk ukuk munk-sik nay. " } ,
{ 0 , " 3.152 " , " Navajo " , " Tsésǫʼ yishą́ągo bííníshghah dóó doo shił neezgai da. " } ,
{ 0 , " 3.153 " , " Lojban " , " mi kakne le nu citka le blaci .iku'i le se go'i na xrani mi " } ,
{ 0 , " 3.154 " , " Nórdicg " , " Ljœr ye caudran créneþ ý jor cẃran. " } ,
NULLTEST
} ;
static const struct Test utf8phrases2 [ ] = {
{ 0 , " 4.1 " , " Euro Symbol " , " €. " } ,
{ 0 , " 4.2 " , " Greek " , " Μπορώ ν α φάω σπασμένα γυαλιά χωρίς ν α πάθω τίποτα. " } ,
{ 0 , " 4.3 " , " Íslenska / Icelandic " , " Ég get etið gler án þess að meiða mig. " } ,
{ 0 , " 4.4 " , " Polish " , " Mogę jeść szkło, i mi nie szkodzi. " } ,
{ 0 , " 4.5 " , " Romanian " , " Pot să mănânc sticlă și ea nu mă rănește. " } ,
{ 0 , " 4.6 " , " Ukrainian " , " Я можу їсти шкло, й воно мені не пошкодить. " } ,
{ 0 , " 4.7 " , " Armenian " , " Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։ " } ,
{ 0 , " 4.8 " , " Georgian " , " მინას ვჭამ და არა მტკივა. " } ,
{ 0 , " 4.9 " , " Hindi " , " मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती. " } ,
{ 0 , " 4.10 " , " Hebrew " , " אני יכול לאכול זכוכית וזה לא מזיק לי. " } ,
{ 0 , " 4.11 " , " Yiddish " , " איך קען עסן גלאָז און עס ט ו ט מיר נישט װײ. " } ,
{ 0 , " 4.12 " , " Arabic " , " أنا قادر على أكل الزجاج و هذا لا يؤلمني. " } ,
{ 0 , " 4.13 " , " Japanese " , " 私はガラスを食べられます。それは私を傷つけません。 " } ,
{ 0 , " 4.14 " , " Thai " , " ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ " } ,
NULLTEST
} ;
static char *
trim ( const char * s )
{
2024-03-12 01:48:42 +08:00
size_t i ;
2017-02-17 05:27:54 +08:00
size_t l = strlen ( s ) ;
char * t = strdup ( s ) ;
2024-03-12 01:48:42 +08:00
for ( i = l ; i - - > 0 ; ) {
2017-02-17 05:27:54 +08:00
if ( t [ i ] ! = ' ' ) break ;
}
t [ i + 1 ] = ' \0 ' ;
return t ;
}
static int
test ( const struct Test * tests , const char * title )
{
int status = NC_NOERR ;
2017-10-25 20:22:58 +08:00
int failures = 0 ;
2017-02-17 05:27:54 +08:00
const struct Test * p ;
fprintf ( stderr , " Testing %s... \n " , title ) ;
for ( p = tests ; p - > id ; p + + ) {
unsigned char * normal ;
char * id ;
char * description ;
const char * pf ;
id = trim ( p - > id ) ;
description = trim ( p - > description ) ;
/* 1. validate the string */
status = nc_utf8_validate ( ( const unsigned char * ) p - > data ) ;
if ( status ! = NC_NOERR ) { pf = " Fail " ; failures + + ; goto fail ; }
/* 2. normalize the string */
status = nc_utf8_normalize ( ( const unsigned char * ) p - > data , & normal ) ;
if ( status ! = NC_NOERR ) { pf = " Fail " ; failures + + ; goto fail ; }
/* 3. re-validate the normalized string */
status = nc_utf8_validate ( ( const unsigned char * ) normal ) ;
if ( status ! = NC_NOERR ) { pf = " Fail " ; failures + + ; goto fail ; }
/* 3. compare input with output */
{
2024-03-12 01:48:42 +08:00
size_t dlen = strlen ( ( const char * ) p - > data ) ;
size_t nlen = strlen ( ( const char * ) normal ) ;
2017-02-17 05:27:54 +08:00
if ( dlen ! = nlen )
2024-03-12 01:48:42 +08:00
fprintf ( stderr , " \t %s: length mismatch: in=%zu norm=%zu \n " , p - > id , dlen , nlen ) ;
size_t mlen = ( dlen < nlen ? dlen : nlen ) ;
for ( size_t i = 0 ; i < mlen ; i + + ) {
unsigned char cd = ( unsigned char ) p - > data [ i ] ;
2017-02-17 05:27:54 +08:00
unsigned char cn = normal [ i ] ;
if ( cd ! = cn ) {
2024-03-12 01:48:42 +08:00
fprintf ( stderr , " \t %s: [%zu] data=|%02x| normal=|%02x| \n " , p - > id , i , cd , cn ) ;
2017-02-17 05:27:54 +08:00
break ;
}
}
}
pf = " Pass " ;
2017-10-27 04:50:21 +08:00
free ( normal ) ;
2017-02-17 05:27:54 +08:00
fail :
fprintf ( stderr , " %s: %s %s \n " , pf , id , description ) ;
fflush ( stderr ) ;
2017-10-27 04:50:21 +08:00
free ( id ) ;
free ( description ) ;
2017-02-17 05:27:54 +08:00
}
return failures ;
}
int
main ( int argc , char * * argv )
{
int failures = 0 ;
printf ( " \n Testing UTF-8 sequences. \n " ) ;
failures + = test ( utf8currency , " Currencies " ) ;
failures + = test ( utf8poems , " Poetry " ) ;
failures + = test ( utf8phrases1 , " Phrases Set 1 " ) ;
failures + = test ( utf8phrases2 , " Phrases Set 2 " ) ;
fprintf ( stderr , " No. of failures = %d \n " , failures ) ;
exit ( failures = = 0 ? 0 : 1 ) ;
}