Merge pull request #2 from digitalatigid/digital-unit-tests-roomalias
Add unicode compatibility for identifiers
This commit is contained in:
		
						commit
						76fb657300
					
				
							
								
								
									
										21
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -210,16 +210,12 @@ fn validate_id<'a>(id: &'a str) -> Result<(), Error> { | |||||||
| fn parse_id<'a>(required_sigil: char, id: &'a str) -> Result<(&'a str, Host, u16), Error> { | fn parse_id<'a>(required_sigil: char, id: &'a str) -> Result<(&'a str, Host, u16), Error> { | ||||||
|     validate_id(id)?; |     validate_id(id)?; | ||||||
| 
 | 
 | ||||||
|     let mut chars = id.chars(); |     if !id.starts_with(required_sigil) { | ||||||
| 
 |  | ||||||
|     let sigil = chars.nth(0).expect("ID missing first character."); |  | ||||||
| 
 |  | ||||||
|     if sigil != required_sigil { |  | ||||||
|         return Err(Error::MissingSigil); |         return Err(Error::MissingSigil); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     let delimiter_index = match chars.position(|c| c == ':') { |     let delimiter_index = match id.find(':') { | ||||||
|         Some(index) => index + 1, |         Some(index) => index, | ||||||
|         None => return Err(Error::MissingDelimiter), |         None => return Err(Error::MissingDelimiter), | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| @ -922,6 +918,16 @@ mod tests { | |||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     #[test] | ||||||
|  |     fn valid_room_alias_id_unicode() { | ||||||
|  |         assert_eq!( | ||||||
|  |             RoomAliasId::try_from("#老虎£я:example.com") | ||||||
|  |                 .expect("Failed to create RoomAliasId.") | ||||||
|  |                 .to_string(), | ||||||
|  |             "#老虎£я:example.com" | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn missing_room_alias_id_sigil() { |     fn missing_room_alias_id_sigil() { | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @ -953,6 +959,7 @@ mod tests { | |||||||
|             Error::InvalidHost |             Error::InvalidHost | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn valid_room_id() { |     fn valid_room_id() { | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user