let basic_test () =
  print_endline "A few accented chars...";
  assert (Ubase.from_utf8 "\195\128\195\160\195\129\195\161\195\130\195\162\195\131\195\163\195\132\195\164\195\133\195\165\195\134\195\166\195\135\195\167\195\144\195\176\195\136\195\168\195\137\195\169\195\138\195\170\195\139\195\171\195\140\195\172\195\141\195\173\195\142\195\174\195\143\195\175\195\145\195\177\195\146\195\178\195\147\195\179\195\148\195\180\195\149\195\181\195\150\195\182\197\147\195\152\195\184\195\159\195\153\195\185\195\154\195\186\195\155\195\187\195\156\195\188\195\157\195\189\195\158\195\190\197\184\195\191"
          =
          "AaAaAaAaAaAaAEaeCcDdEeEeEeEeIiIiIiIiNnOoOoOoOoOooeOossUuUuUuUuYyTHthYy");
  print_endline "OK."

let test_viet () =
  print_endline "Vietnamese test...";
  assert (Ubase.from_utf8 "V\197\169 Ng\225\187\141c Phan" = "Vu Ngoc Phan");
  assert (Ubase.from_utf8 "Vu\204\131 Ngo\204\163c Phan" = "Vu Ngoc Phan");

  let b = Ubase.from_utf8 "V≈© Ng·ªçc Phan (1902-1987) l√† nh√† vƒÉn, nh√† nghi√™n c·ª©u vƒÉn h·ªçc hi·ªán ƒë·∫°i v√† vƒÉn h·ªçc d√¢n gian Vi·ªát Nam. Trong nh·ªØng nƒÉm ƒë·∫ßu c·∫ßm b√∫t, √¥ng c√≤n c√≥ b√∫t danh l√† Ch·ªâ Qua Th·ªã."
          =
          "Vu Ngoc Phan (1902-1987) la nha van, nha nghien cuu van hoc hien dai va van hoc dan gian Viet Nam. Trong nhung nam dau cam but, ong con co but danh la Chi Qua Thi." in
  assert b;
  let t = "Anh xin l·ªói c√°c em b√© v√¨ ƒë√£ ƒë·ªÅ t·∫∑ng cu·ªën s√°ch n√†y cho m·ªôt √¥ng ng∆∞·ªùi l·ªõn."
          |> Ubase.from_utf8 in
  assert (t = "Anh xin loi cac em be vi da de tang cuon sach nay cho mot ong nguoi lon.");
  print_endline "OK."

let test_french () =
  print_endline "French test...";
  let b = Ubase.from_utf8 "Cette princesse √©tait belle, quoiqu‚Äôelle e√ªt pass√© la premi√®re jeunesse ; elle aimait la grandeur, la magnificence et les plaisirs. Le roi l‚Äôavait √©pous√©e lorsqu‚Äôil √©tait encore duc d‚ÄôOrl√©ans, et qu‚Äôil avait pour a√Æn√© le dauphin, qui mourut √† Tournon, prince que sa naissance et ses grandes qualit√©s destinaient √† remplir dignement la place du roi Fran√ßois premier, son p√®re."
  =
  "Cette princesse etait belle, quoiqu'elle eut passe la premiere jeunesse ; elle aimait la grandeur, la magnificence et les plaisirs. Le roi l'avait epousee lorsqu'il etait encore duc d'Orleans, et qu'il avait pour aine le dauphin, qui mourut a Tournon, prince que sa naissance et ses grandes qualites destinaient a remplir dignement la place du roi Francois premier, son pere." in
  assert b;
  print_endline "OK."

let test_isolatin () =
  print_endline "Conversion from isolatin...";
  assert (Ubase.isolatin_to_utf8 "LiËge" = "Li\195\168ge");
  print_endline "OK."
  
let () =
  basic_test ();
  test_viet ();
  test_french ();
  test_isolatin ()
