Skip to content

Commit dedd4e9

Browse files
test: add test for decode_segment
1 parent c3f755e commit dedd4e9

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

typify-impl/src/util.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -544,14 +544,15 @@ pub(crate) fn constant_string_value(schema: &Schema) -> Option<&str> {
544544
}
545545
}
546546

547+
fn decode_segment(segment: &str) -> String {
548+
segment.replace("~1", "/").replace("~0", "~")
549+
}
550+
547551
pub(crate) fn ref_key(ref_name: &str) -> RefKey {
548552
if ref_name == "#" {
549553
RefKey::Root
550554
} else if let Some(idx) = ref_name.rfind('/') {
551-
let decoded_segment = ref_name[idx + 1..]
552-
.replace("~1", "/")
553-
.replace("~0", "~")
554-
.to_string();
555+
let decoded_segment = decode_segment(&ref_name[idx + 1..]);
555556

556557
RefKey::Def(decoded_segment)
557558
} else {
@@ -906,7 +907,7 @@ mod tests {
906907
};
907908

908909
use crate::{
909-
util::{sanitize, schemas_mutually_exclusive, Case},
910+
util::{decode_segment, sanitize, schemas_mutually_exclusive, Case},
910911
Name,
911912
};
912913

@@ -1012,6 +1013,12 @@ mod tests {
10121013
assert!(schemas_mutually_exclusive(&b, &a, &BTreeMap::new()));
10131014
}
10141015

1016+
#[test]
1017+
fn test_decode_segment() {
1018+
assert_eq!(decode_segment("foo~1bar"), "foo/bar");
1019+
assert_eq!(decode_segment("foo~0bar"), "foo~bar");
1020+
}
1021+
10151022
#[test]
10161023
fn test_sanitize() {
10171024
assert_eq!(sanitize("type", Case::Snake), "type_");

0 commit comments

Comments
 (0)