let substring_inputs = [ [| ""; "⟿"; "⟿ቄ"; "⟿ቄş"; "⟿ቄş龟"; "⟿ቄş龟¯"; |]; [| ""; "ç"; "çe"; "çek"; "çeko"; "çekos"; "çekosl"; "çekoslo"; "çekoslov"; "çekoslova"; "çekoslovak"; "çekoslovaky"; "çekoslovakya"; "çekoslovakyal"; "çekoslovakyala"; "çekoslovakyalaş"; "çekoslovakyalaşt"; "çekoslovakyalaştı"; "çekoslovakyalaştır"; "çekoslovakyalaştıra"; "çekoslovakyalaştıram"; "çekoslovakyalaştırama"; "çekoslovakyalaştıramad"; "çekoslovakyalaştıramadı"; "çekoslovakyalaştıramadık"; "çekoslovakyalaştıramadıkl"; "çekoslovakyalaştıramadıkla"; "çekoslovakyalaştıramadıklar"; "çekoslovakyalaştıramadıkları"; "çekoslovakyalaştıramadıklarım"; "çekoslovakyalaştıramadıklarımı"; "çekoslovakyalaştıramadıklarımız"; "çekoslovakyalaştıramadıklarımızd"; "çekoslovakyalaştıramadıklarımızda"; "çekoslovakyalaştıramadıklarımızdan"; "çekoslovakyalaştıramadıklarımızdanm"; "çekoslovakyalaştıramadıklarımızdanmı"; "çekoslovakyalaştıramadıklarımızdanmıs"; "çekoslovakyalaştıramadıklarımızdanmısı"; "çekoslovakyalaştıramadıklarımızdanmısın"; "çekoslovakyalaştıramadıklarımızdanmısını"; "çekoslovakyalaştıramadıklarımızdanmısınız"; |] ] let test_substring () = let test a = let m = Array.length a - 1 in let v = a.(m) in assert(UTF8.length v = m); for i = 0 to m do assert(a.(i) = UTF8.substring v 0 i); done; for i = 0 to m - 1 do for j = i to m - 1 do let u = UTF8.substring v i (j - i + 1) in UTF8.validate u done done in List.iter test substring_inputs let () = Util.register1 "UTF" "substring" test_substring