mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:12:43 +00:00 
			
		
		
		
	AK: Add a String factory to create a string from a single code point
This commit is contained in:
		
							parent
							
								
									8aca8e82cb
								
							
						
					
					
						commit
						12c8bc3e85
					
				
					 2 changed files with 43 additions and 1 deletions
				
			
		|  | @ -4,9 +4,12 @@ | |||
|  * SPDX-License-Identifier: BSD-2-Clause | ||||
|  */ | ||||
| 
 | ||||
| // This is included first on purpose. We specifically do not want LibTest to override VERIFY here so
 | ||||
| // that we can actually test that some String factory methods cause a crash with invalid input.
 | ||||
| #include <AK/String.h> | ||||
| 
 | ||||
| #include <LibTest/TestCase.h> | ||||
| 
 | ||||
| #include <AK/String.h> | ||||
| #include <AK/StringBuilder.h> | ||||
| #include <AK/Try.h> | ||||
| #include <AK/Utf8View.h> | ||||
|  | @ -64,6 +67,26 @@ TEST_CASE(long_strings) | |||
|     EXPECT_EQ(string.bytes_as_string_view(), "abcdefgh"sv); | ||||
| } | ||||
| 
 | ||||
| TEST_CASE(from_code_points) | ||||
| { | ||||
|     for (u32 code_point = 0; code_point < 0x80; ++code_point) { | ||||
|         auto string = String::from_code_point(code_point); | ||||
| 
 | ||||
|         auto ch = static_cast<char>(code_point); | ||||
|         StringView view { &ch, 1 }; | ||||
| 
 | ||||
|         EXPECT_EQ(string, view); | ||||
|     } | ||||
| 
 | ||||
|     auto string = String::from_code_point(0x10ffff); | ||||
|     EXPECT_EQ(string, "\xF4\x8F\xBF\xBF"sv); | ||||
| 
 | ||||
|     EXPECT_CRASH("Creating a string from an invalid code point", [] { | ||||
|         String::from_code_point(0xffffffff); | ||||
|         return Test::Crash::Failure::DidNotCrash; | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| TEST_CASE(substring) | ||||
| { | ||||
|     auto superstring = MUST(String::from_utf8("Hello I am a long string"sv)); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn