PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/test/externals/ruby1.9/ruby/enc/test_emoji.rb

https://bitbucket.org/nicksieger/jruby
Ruby | 442 lines | 346 code | 96 blank | 0 comment | 2 complexity | b8f50a28dc528f5930f3f1b40ff232af MD5 | raw file
Possible License(s): GPL-3.0, JSON
  1. require 'test/unit'
  2. module Emoji
  3. class TestRenameSJIS < Test::Unit::TestCase
  4. def test_shift_jis
  5. assert_raise(ArgumentError) { "".force_encoding("Shift_JIS-DoCoMo") }
  6. assert_raise(ArgumentError) { "".force_encoding("Shift_JIS-KDDI") }
  7. assert_raise(ArgumentError) { "".force_encoding("Shift_JIS-SoftBank") }
  8. end
  9. end
  10. class TestUTF8_BLACK_SUN_WITH_RAYS < Test::Unit::TestCase
  11. include Emoji
  12. def setup
  13. @codes = {
  14. "UTF8-DoCoMo" => utf8_docomo("\u{E63E}"),
  15. "UTF8-KDDI" => utf8_kddi("\u{E488}"),
  16. "UTF8-SoftBank" => utf8_softbank("\u{E04A}"),
  17. "UTF-8" => "\u{2600}",
  18. }
  19. end
  20. def test_convert
  21. @codes.each do |from_enc, from_str|
  22. @codes.each do |to_enc, to_str|
  23. next if from_enc == to_enc
  24. assert_equal to_str, from_str.encode(to_enc), "convert from #{from_enc} to #{to_enc}"
  25. end
  26. end
  27. end
  28. end
  29. class TestDoCoMo < Test::Unit::TestCase
  30. include Emoji
  31. def setup
  32. setup_instance_variable(self)
  33. end
  34. def test_encoding_name
  35. %w(UTF8-DoCoMo
  36. SJIS-DoCoMo).each do |n|
  37. assert Encoding.name_list.include?(n), "encoding not found: #{n}"
  38. end
  39. end
  40. def test_comparison
  41. assert_not_equal Encoding::UTF_8, Encoding::UTF8_DoCoMo
  42. assert_not_equal Encoding::Windows_31J, Encoding::SJIS_DoCoMo
  43. end
  44. def test_from_utf8
  45. assert_nothing_raised { assert_equal utf8_docomo(@aiueo_utf8), to_utf8_docomo(@aiueo_utf8) }
  46. assert_nothing_raised { assert_equal sjis_docomo(@aiueo_sjis), to_sjis_docomo(@aiueo_utf8) }
  47. end
  48. def test_from_sjis
  49. assert_nothing_raised { assert_equal utf8_docomo(@aiueo_utf8), to_utf8_docomo(@aiueo_sjis) }
  50. assert_nothing_raised { assert_equal sjis_docomo(@aiueo_sjis), to_sjis_docomo(@aiueo_sjis) }
  51. end
  52. def test_to_utf8
  53. assert_nothing_raised { assert_equal @utf8, to_utf8(@utf8_docomo) }
  54. assert_nothing_raised { assert_equal @utf8, to_utf8(@sjis_docomo) }
  55. end
  56. def test_to_sjis
  57. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@utf8_docomo) }
  58. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@sjis_docomo) }
  59. end
  60. def test_to_eucjp
  61. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@utf8_docomo) }
  62. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@sjis_docomo) }
  63. end
  64. def test_docomo
  65. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@sjis_docomo) }
  66. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_docomo) }
  67. end
  68. def test_to_kddi
  69. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@utf8_docomo) }
  70. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@utf8_docomo) }
  71. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@utf8_docomo) }
  72. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@sjis_docomo) }
  73. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@sjis_docomo) }
  74. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@sjis_docomo) }
  75. assert_raise(Encoding::UndefinedConversionError) { to_utf8_kddi(@utf8_docomo_only) }
  76. assert_raise(Encoding::UndefinedConversionError) { to_sjis_kddi(@utf8_docomo_only) }
  77. assert_raise(Encoding::UndefinedConversionError) { to_iso2022jp_kddi(@utf8_docomo_only) }
  78. assert_raise(Encoding::UndefinedConversionError) { to_utf8_kddi(@sjis_docomo_only) }
  79. assert_raise(Encoding::UndefinedConversionError) { to_sjis_kddi(@sjis_docomo_only) }
  80. assert_raise(Encoding::UndefinedConversionError) { to_iso2022jp_kddi(@sjis_docomo_only) }
  81. end
  82. def test_to_softbank
  83. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@utf8_docomo) }
  84. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_docomo) }
  85. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@sjis_docomo) }
  86. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@sjis_docomo) }
  87. assert_raise(Encoding::UndefinedConversionError) { to_utf8_softbank(@utf8_docomo_only) }
  88. assert_raise(Encoding::UndefinedConversionError) { to_sjis_softbank(@utf8_docomo_only) }
  89. assert_raise(Encoding::UndefinedConversionError) { to_utf8_softbank(@sjis_docomo_only) }
  90. assert_raise(Encoding::UndefinedConversionError) { to_sjis_softbank(@sjis_docomo_only) }
  91. end
  92. end
  93. class TestKDDI < Test::Unit::TestCase
  94. include Emoji
  95. def setup
  96. setup_instance_variable(self)
  97. end
  98. def test_encoding_name
  99. %w(UTF8-KDDI
  100. SJIS-KDDI
  101. ISO-2022-JP-KDDI
  102. stateless-ISO-2022-JP-KDDI).each do |n|
  103. assert Encoding.name_list.include?(n), "encoding not found: #{n}"
  104. end
  105. end
  106. def test_comparison
  107. assert_not_equal Encoding::UTF_8, Encoding::UTF8_KDDI
  108. assert_not_equal Encoding::Windows_31J, Encoding::SJIS_KDDI
  109. assert_not_equal Encoding::ISO_2022_JP, Encoding::ISO_2022_JP_KDDI
  110. assert_not_equal Encoding::Stateless_ISO_2022_JP, Encoding::Stateless_ISO_2022_JP_KDDI
  111. end
  112. def test_from_utf8
  113. assert_nothing_raised { assert_equal utf8_kddi(@aiueo_utf8), to_utf8_kddi(@aiueo_utf8) }
  114. assert_nothing_raised { assert_equal sjis_kddi(@aiueo_sjis), to_sjis_kddi(@aiueo_utf8) }
  115. assert_nothing_raised { assert_equal iso2022jp_kddi(@aiueo_iso2022jp), to_iso2022jp_kddi(@aiueo_utf8) }
  116. end
  117. def test_from_sjis
  118. assert_nothing_raised { assert_equal utf8_kddi(@aiueo_utf8), to_utf8_kddi(@aiueo_sjis) }
  119. assert_nothing_raised { assert_equal sjis_kddi(@aiueo_sjis), to_sjis_kddi(@aiueo_sjis) }
  120. assert_nothing_raised { assert_equal iso2022jp_kddi(@aiueo_iso2022jp), to_iso2022jp_kddi(@aiueo_sjis) }
  121. end
  122. def test_from_iso2022jp
  123. assert_nothing_raised { assert_equal utf8_kddi(@aiueo_utf8), to_utf8_kddi(@aiueo_iso2022jp) }
  124. assert_nothing_raised { assert_equal sjis_kddi(@aiueo_sjis), to_sjis_kddi(@aiueo_iso2022jp) }
  125. assert_nothing_raised { assert_equal iso2022jp_kddi(@aiueo_iso2022jp), to_iso2022jp_kddi(@aiueo_iso2022jp) }
  126. end
  127. def test_to_utf8
  128. assert_nothing_raised { assert_equal @utf8, to_utf8(@utf8_kddi) }
  129. assert_nothing_raised { assert_equal @utf8, to_utf8(@utf8_undoc_kddi) }
  130. assert_nothing_raised { assert_equal @utf8, to_utf8(@sjis_kddi) }
  131. assert_nothing_raised { assert_equal @utf8, to_utf8(@iso2022jp_kddi) }
  132. end
  133. def test_to_sjis
  134. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@utf8_kddi) }
  135. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@utf8_undoc_kddi) }
  136. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@sjis_kddi) }
  137. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@iso2022jp_kddi) }
  138. end
  139. def test_to_eucjp
  140. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@utf8_kddi) }
  141. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@utf8_undoc_kddi) }
  142. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@sjis_kddi) }
  143. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@iso2022jp_kddi) }
  144. end
  145. def test_kddi
  146. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@sjis_kddi) }
  147. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@iso2022jp_kddi) }
  148. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@sjis_kddi) }
  149. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@utf8_undoc_kddi) }
  150. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@iso2022jp_kddi) }
  151. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@sjis_kddi) }
  152. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@utf8_undoc_kddi) }
  153. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@iso2022jp_kddi) }
  154. end
  155. def test_to_docomo
  156. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@utf8_kddi) }
  157. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_kddi) }
  158. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@utf8_undoc_kddi) }
  159. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_undoc_kddi) }
  160. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@sjis_kddi) }
  161. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@sjis_kddi) }
  162. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@iso2022jp_kddi) }
  163. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@iso2022jp_kddi) }
  164. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_docomo, to_utf8_docomo(@utf8_kddi_only) }
  165. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_kddi_only) }
  166. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_docomo, to_utf8_docomo(@utf8_undoc_kddi_only) }
  167. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_undoc_kddi_only) }
  168. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_docomo, to_utf8_docomo(@sjis_kddi_only) }
  169. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_docomo, to_sjis_docomo(@sjis_kddi_only) }
  170. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_docomo, to_utf8_docomo(@iso2022jp_kddi_only) }
  171. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_docomo, to_sjis_docomo(@iso2022jp_kddi_only) }
  172. end
  173. def test_to_softbank
  174. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@utf8_kddi) }
  175. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_kddi) }
  176. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@utf8_undoc_kddi) }
  177. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_undoc_kddi) }
  178. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@sjis_kddi) }
  179. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@sjis_kddi) }
  180. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@iso2022jp_kddi) }
  181. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@iso2022jp_kddi) }
  182. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_softbank, to_utf8_softbank(@utf8_kddi_only) }
  183. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_kddi_only) }
  184. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_softbank, to_utf8_softbank(@utf8_undoc_kddi_only) }
  185. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_undoc_kddi_only) }
  186. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_softbank, to_utf8_softbank(@sjis_kddi_only) }
  187. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_softbank, to_sjis_softbank(@sjis_kddi_only) }
  188. assert_raise(Encoding::UndefinedConversionError) { assert_equal @utf8_softbank, to_utf8_softbank(@iso2022jp_kddi_only) }
  189. assert_raise(Encoding::UndefinedConversionError) { assert_equal @sjis_softbank, to_sjis_softbank(@iso2022jp_kddi_only) }
  190. end
  191. end
  192. class TestSoftBank < Test::Unit::TestCase
  193. include Emoji
  194. def setup
  195. setup_instance_variable(self)
  196. end
  197. def test_encoding_name
  198. %w(UTF8-SoftBank
  199. SJIS-SoftBank).each do |n|
  200. assert Encoding.name_list.include?(n), "encoding not found: #{n}"
  201. end
  202. end
  203. def test_comparison
  204. assert_not_equal Encoding::UTF_8, Encoding::UTF8_SoftBank
  205. assert_not_equal Encoding::Windows_31J, Encoding::SJIS_SoftBank
  206. end
  207. def test_from_utf8
  208. assert_nothing_raised { assert_equal utf8_softbank(@aiueo_utf8), to_utf8_softbank(@aiueo_utf8) }
  209. assert_nothing_raised { assert_equal sjis_softbank(@aiueo_sjis), to_sjis_softbank(@aiueo_utf8) }
  210. end
  211. def test_from_sjis
  212. assert_nothing_raised { assert_equal utf8_softbank(@aiueo_utf8), to_utf8_softbank(@aiueo_sjis) }
  213. assert_nothing_raised { assert_equal sjis_softbank(@aiueo_sjis), to_sjis_softbank(@aiueo_sjis) }
  214. end
  215. def test_to_utf8
  216. assert_nothing_raised { assert_equal @utf8, to_utf8(@utf8_softbank) }
  217. assert_nothing_raised { assert_equal @utf8, to_utf8(@sjis_softbank) }
  218. end
  219. def test_to_sjis
  220. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@utf8_softbank) }
  221. assert_raise(Encoding::UndefinedConversionError) { to_sjis(@sjis_softbank) }
  222. end
  223. def test_to_eucjp
  224. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@utf8_softbank) }
  225. assert_raise(Encoding::UndefinedConversionError) { to_eucjp(@sjis_softbank) }
  226. end
  227. def test_softbank
  228. assert_nothing_raised { assert_equal @utf8_softbank, to_utf8_softbank(@sjis_softbank) }
  229. assert_nothing_raised { assert_equal @sjis_softbank, to_sjis_softbank(@utf8_softbank) }
  230. end
  231. def test_to_docomo
  232. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@utf8_softbank) }
  233. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@utf8_softbank) }
  234. assert_nothing_raised { assert_equal @utf8_docomo, to_utf8_docomo(@sjis_softbank) }
  235. assert_nothing_raised { assert_equal @sjis_docomo, to_sjis_docomo(@sjis_softbank) }
  236. assert_raise(Encoding::UndefinedConversionError) { to_utf8_docomo(@utf8_softbank_only) }
  237. assert_raise(Encoding::UndefinedConversionError) { to_sjis_docomo(@utf8_softbank_only) }
  238. assert_raise(Encoding::UndefinedConversionError) { to_utf8_docomo(@sjis_softbank_only) }
  239. assert_raise(Encoding::UndefinedConversionError) { to_sjis_docomo(@sjis_softbank_only) }
  240. end
  241. def test_to_kddi
  242. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@utf8_softbank) }
  243. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@utf8_softbank) }
  244. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@utf8_softbank) }
  245. assert_nothing_raised { assert_equal @utf8_kddi, to_utf8_kddi(@sjis_softbank) }
  246. assert_nothing_raised { assert_equal @sjis_kddi, to_sjis_kddi(@sjis_softbank) }
  247. assert_nothing_raised { assert_equal @iso2022jp_kddi, to_iso2022jp_kddi(@sjis_softbank) }
  248. assert_raise(Encoding::UndefinedConversionError) { to_utf8_kddi(@utf8_softbank_only) }
  249. assert_raise(Encoding::UndefinedConversionError) { to_sjis_kddi(@utf8_softbank_only) }
  250. assert_raise(Encoding::UndefinedConversionError) { to_iso2022jp_kddi(@utf8_softbank_only) }
  251. assert_raise(Encoding::UndefinedConversionError) { to_utf8_kddi(@sjis_softbank_only) }
  252. assert_raise(Encoding::UndefinedConversionError) { to_sjis_kddi(@sjis_softbank_only) }
  253. assert_raise(Encoding::UndefinedConversionError) { to_iso2022jp_kddi(@sjis_softbank_only) }
  254. end
  255. end
  256. private
  257. def setup_instance_variable(obj)
  258. obj.instance_eval do
  259. @aiueo_utf8 = "\u{3042}\u{3044}\u{3046}\u{3048}\u{304A}"
  260. @aiueo_sjis = to_sjis(@aiueo_utf8)
  261. @aiueo_iso2022jp = to_iso2022jp(@aiueo_utf8)
  262. @utf8 = "\u{2600}"
  263. @utf8_docomo = utf8_docomo("\u{E63E}")
  264. @sjis_docomo = sjis_docomo("\xF8\x9F")
  265. @utf8_docomo_only = utf8_docomo("\u{E6B1}")
  266. @sjis_docomo_only = sjis_docomo("\xF9\x55")
  267. @utf8_kddi = utf8_kddi("\u{E488}")
  268. @utf8_undoc_kddi = utf8_kddi("\u{EF60}")
  269. @sjis_kddi = sjis_kddi("\xF6\x60")
  270. @iso2022jp_kddi = iso2022jp_kddi("\x1B$B\x75\x41\x1B(B")
  271. @stateless_iso2022jp_kddi = stateless_iso2022jp_kddi("\x92\xF5\xC1")
  272. @utf8_kddi_only = utf8_kddi("\u{E5B3}")
  273. @utf8_undoc_kddi_only = utf8_kddi("\u{F0D0}")
  274. @sjis_kddi_only = sjis_kddi("\xF7\xD0")
  275. @iso2022jp_kddi_only = iso2022jp_kddi("\x1B$B\x78\x52\x1B(B")
  276. @stateless_iso2022jp_kddi_only = stateless_iso2022jp_kddi("\x92\xF8\xD2")
  277. @utf8_softbank = utf8_softbank("\u{E04A}")
  278. @sjis_softbank = sjis_softbank("\xF9\x8B")
  279. @utf8_softbank_only = utf8_softbank("\u{E524}")
  280. @sjis_softbank_only = sjis_softbank("\xFB\xC4")
  281. end
  282. end
  283. def utf8(str)
  284. str.force_encoding("UTF-8")
  285. end
  286. def to_utf8(str)
  287. str.encode("UTF-8")
  288. end
  289. def to_sjis(str)
  290. str.encode("Windows-31J")
  291. end
  292. def to_eucjp(str)
  293. str.encode("eucJP-ms")
  294. end
  295. def to_iso2022jp(str)
  296. str.encode("ISO-2022-JP")
  297. end
  298. def utf8_docomo(str)
  299. str.force_encoding("UTF8-DoCoMo")
  300. end
  301. def to_utf8_docomo(str)
  302. str.encode("UTF8-DoCoMo")
  303. end
  304. def utf8_kddi(str)
  305. str.force_encoding("UTF8-KDDI")
  306. end
  307. def to_utf8_kddi(str)
  308. str.encode("UTF8-KDDI")
  309. end
  310. def utf8_softbank(str)
  311. str.force_encoding("UTF8-SoftBank")
  312. end
  313. def to_utf8_softbank(str)
  314. str.encode("UTF8-SoftBank")
  315. end
  316. def sjis_docomo(str)
  317. str.force_encoding("SJIS-DoCoMo")
  318. end
  319. def to_sjis_docomo(str)
  320. str.encode("SJIS-DoCoMo")
  321. end
  322. def sjis_kddi(str)
  323. str.force_encoding("SJIS-KDDI")
  324. end
  325. def to_sjis_kddi(str)
  326. str.encode("SJIS-KDDI")
  327. end
  328. def sjis_softbank(str)
  329. str.force_encoding("SJIS-SoftBank")
  330. end
  331. def to_sjis_softbank(str)
  332. str.encode("SJIS-SoftBank")
  333. end
  334. def iso2022jp_kddi(str)
  335. str.force_encoding("ISO-2022-JP-KDDI")
  336. end
  337. def to_iso2022jp_kddi(str)
  338. str.encode("ISO-2022-JP-KDDI")
  339. end
  340. def stateless_iso2022jp_kddi(str)
  341. str.force_encoding("stateless-ISO-2022-JP-KDDI")
  342. end
  343. def to_stateless_iso2022jp_kddi(str)
  344. str.encode("stateless-ISO-2022-JP-KDDI")
  345. end
  346. end