Implemented the JSON spec for string parsing for everything but the \uXXXX escaping for unicode
This commit is contained in:
		
							parent
							
								
									2443aa6521
								
							
						
					
					
						commit
						7f4fcc51f6
					
				
					 2 changed files with 70 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -1618,10 +1618,39 @@ TEST_CASE("Parser")
 | 
			
		|||
        CHECK(json::parse("\"\"") == json(""));
 | 
			
		||||
        CHECK(json::parse("\"foo\"") == json("foo"));
 | 
			
		||||
 | 
			
		||||
        // escape characters
 | 
			
		||||
        // escaping quotes
 | 
			
		||||
        CHECK_THROWS_AS(json::parse("\"\\\""), std::invalid_argument);
 | 
			
		||||
        CHECK_NOTHROW(json::parse("\"\\\"\""));
 | 
			
		||||
        CHECK_NOTHROW(json::parse("\"\\\\\""));
 | 
			
		||||
 | 
			
		||||
        // escaping backslashes
 | 
			
		||||
        CHECK(json::parse("\"a\\\\z\"") == json("a\\z"));
 | 
			
		||||
        CHECK(json::parse("\"\\\\\"") == json("\\"));
 | 
			
		||||
        CHECK(json::parse("\"\\\\a\\\\\"") == json("\\a\\"));
 | 
			
		||||
        CHECK(json::parse("\"\\\\\\\\\"") == json("\\\\"));
 | 
			
		||||
 | 
			
		||||
        // escaping slash
 | 
			
		||||
        CHECK(json::parse("\"a\\/z\"") == json("a/z"));
 | 
			
		||||
        CHECK(json::parse("\"\\/\"") == json("/"));
 | 
			
		||||
 | 
			
		||||
        // escaping tabs
 | 
			
		||||
        CHECK(json::parse("\"a\\tz\"") == json("a\tz"));
 | 
			
		||||
        CHECK(json::parse("\"\\t\"") == json("\t"));
 | 
			
		||||
 | 
			
		||||
        // escaping formfeed
 | 
			
		||||
        CHECK(json::parse("\"a\\fz\"") == json("a\fz"));
 | 
			
		||||
        CHECK(json::parse("\"\\f\"") == json("\f"));
 | 
			
		||||
 | 
			
		||||
        // escaping carriage return
 | 
			
		||||
        CHECK(json::parse("\"a\\rz\"") == json("a\rz"));
 | 
			
		||||
        CHECK(json::parse("\"\\r\"") == json("\r"));
 | 
			
		||||
 | 
			
		||||
        // escaping backspace
 | 
			
		||||
        CHECK(json::parse("\"a\\bz\"") == json("a\bz"));
 | 
			
		||||
        CHECK(json::parse("\"\\b\"") == json("\b"));
 | 
			
		||||
 | 
			
		||||
        // escaping newline
 | 
			
		||||
        CHECK(json::parse("\"a\\nz\"") == json("a\nz"));
 | 
			
		||||
        CHECK(json::parse("\"\\n\"") == json("\n"));
 | 
			
		||||
 | 
			
		||||
        // quotes must be closed
 | 
			
		||||
        CHECK_THROWS_AS(json::parse("\""), std::invalid_argument);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue