From a2d9744d4d9051a59a919a7d8bbe95da1bd515da Mon Sep 17 00:00:00 2001 From: ScottPJones Date: Wed, 3 Oct 2018 10:01:12 -0400 Subject: [PATCH] Add more unit tests for casefolding --- src/StrBase.jl | 2 +- test/basic.jl | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/StrBase.jl b/src/StrBase.jl index 15bdcd0..b3ad859 100644 --- a/src/StrBase.jl +++ b/src/StrBase.jl @@ -32,7 +32,7 @@ using ModuleInterfaceTools _memcmp, _memcpy, _memset, _fwd_memchr, _rev_memchr, empty_string, _calcpnt, _mask_bytes, _allocate, MS_UTF8, MS_UTF16, MS_UTF32, MS_SubUTF32, MS_Latin, MS_ByteStr, MS_RawUTF8, - _wrap_substr, _empty_sub, + _wrap_substr, _empty_sub, AccessType, UInt16_U, UInt32_U, UInt16_S, UInt32_S, UInt16_US, UInt32_US, alignedtype, swappedtype, checkkeep, splitarr, __split, __rsplit, __replace diff --git a/test/basic.jl b/test/basic.jl index c1bda75..3abb22a 100644 --- a/test/basic.jl +++ b/test/basic.jl @@ -34,6 +34,28 @@ end end end +@testset "casefold string" begin + for ST in (ASCIIStr, LatinStr, UCS2Str, UTF32Str, UTF8Str, UTF16Str) + C = eltype(ST) + tm = typemax(C) + for c = 0:Int(tm) + # Skip surrogates + 0xd800 <= c < 0xe000 && continue + ch = C(c) + # Check to make sure this character would still fit uppercased + cu = uppercase(ch) + cu > tm && continue + for str in ("$ch test Beg", "test End $ch", "test $ch Mid", "$ch") + cvtstr = convert(ST, str) + @test uppercase(str) == uppercase(cvtstr) + @test lowercase(str) == lowercase(cvtstr) + #@test titlecase(str) == titlecase(cvtstr) + #@test uppercase_first(str) == uppercase_first(cvtstr) + end + end + end +end + @testset "{starts,ends}_with" begin for (ST, type_list) in compat_types, CT in type_list, str in test_strings_base[CT] cvtstr = convert(ST, str)