15
15
16
16
#include < catch2/catch_test_macros.hpp>
17
17
18
- #include < string>
19
18
#include < string_view>
20
19
21
20
using namespace std ::string_view_literals;
22
- using namespace std ::string_view_literals;
23
- using std::optional;
24
- using unicode::script_segmenter;
25
21
26
22
TEST_CASE (" script_segmenter.private_use_area" , " [script_segmenter]" )
27
23
{
@@ -35,15 +31,32 @@ TEST_CASE("script_segmenter.private_use_area", "[script_segmenter]")
35
31
CHECK (res1.script == unicode::Script::Unknown);
36
32
}
37
33
34
+ TEST_CASE (" script_segmenter.common_to_specific" , " [script_segmenter]" )
35
+ {
36
+ // '1' is script property Common, 'a' is script property Latin, so the whole string is Latin.
37
+
38
+ auto constexpr str = U" 1a" sv;
39
+ auto seg = unicode::script_segmenter { str.data (), str.size () };
40
+
41
+ std::optional<unicode::script_segmenter::result> const r1 = seg.consume ();
42
+ REQUIRE (r1.has_value ());
43
+ auto const res1 = r1.value ();
44
+ CHECK (res1.size == str.size ());
45
+ CHECK (res1.script == unicode::Script::Latin);
46
+
47
+ auto const r2 = seg.consume ();
48
+ REQUIRE_FALSE (r2.has_value ());
49
+ }
50
+
38
51
TEST_CASE (" script_segmenter.greek_kanji_greek" , " [script_segmenter]" )
39
52
{
40
53
char32_t const * str = U" λ 合気道 λ;" ;
41
- auto seg = script_segmenter { str };
54
+ auto seg = unicode:: script_segmenter { str };
42
55
43
56
// greek text
44
- optional<script_segmenter::result> const r1 = seg.consume ();
57
+ std:: optional<unicode:: script_segmenter::result> const r1 = seg.consume ();
45
58
REQUIRE (r1.has_value ());
46
- script_segmenter::result const res1 = r1.value ();
59
+ unicode:: script_segmenter::result const res1 = r1.value ();
47
60
CHECK (res1.size == 2 );
48
61
CHECK (res1.script == unicode::Script::Greek);
49
62
0 commit comments