From 3c06e768d603ea4452fc95cc48951af9270f76a1 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Wed, 11 Feb 2026 22:00:46 +0000 Subject: feat: добавить поддержку атомарной замены файлов для Windows и тесты на максимальную длину имени MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/nres/src/tests.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'crates/nres/src/tests.rs') diff --git a/crates/nres/src/tests.rs b/crates/nres/src/tests.rs index 51ec8b4..6de02e5 100644 --- a/crates/nres/src/tests.rs +++ b/crates/nres/src/tests.rs @@ -770,6 +770,41 @@ fn nres_synthetic_read_find_and_edit() { let _ = fs::remove_file(&path); } +#[test] +fn nres_max_name_length_roundtrip() { + let max_name = "12345678901234567890123456789012345"; + assert_eq!(max_name.len(), 35); + + let src = build_nres_bytes(&[SyntheticEntry { + kind: 9, + attr1: 1, + attr2: 2, + attr3: 3, + name: max_name, + data: b"payload", + }]); + + let archive = Archive::open_bytes(Arc::from(src.into_boxed_slice()), OpenOptions::default()) + .expect("open synthetic nres failed"); + + assert_eq!(archive.entry_count(), 1); + assert_eq!(archive.find(max_name), Some(EntryId(0))); + assert_eq!( + archive.find(&max_name.to_ascii_lowercase()), + Some(EntryId(0)) + ); + + let entry = archive.get(EntryId(0)).expect("missing entry 0"); + assert_eq!(entry.meta.name, max_name); + assert_eq!( + archive + .read(EntryId(0)) + .expect("read payload failed") + .as_slice(), + b"payload" + ); +} + #[test] fn nres_find_falls_back_when_sort_index_is_out_of_range() { let mut bytes = build_nres_bytes(&[ -- cgit v1.2.3