@@ -132,103 +132,3 @@ impl Interner {
132132 ( blob, offsets)
133133 }
134134}
135-
136- #[ cfg( test) ]
137- mod tests {
138- use super :: * ;
139-
140- #[ test]
141- fn intern_deduplicates ( ) {
142- let mut interner = Interner :: new ( ) ;
143-
144- let a = interner. intern ( "foo" ) ;
145- let b = interner. intern ( "foo" ) ;
146- let c = interner. intern ( "bar" ) ;
147-
148- assert_eq ! ( a, b) ;
149- assert_ne ! ( a, c) ;
150- assert_eq ! ( interner. len( ) , 2 ) ;
151- }
152-
153- #[ test]
154- fn resolve_roundtrip ( ) {
155- let mut interner = Interner :: new ( ) ;
156-
157- let sym = interner. intern ( "hello" ) ;
158- assert_eq ! ( interner. resolve( sym) , "hello" ) ;
159- }
160-
161- #[ test]
162- fn intern_owned_avoids_clone_on_hit ( ) {
163- let mut interner = Interner :: new ( ) ;
164-
165- let a = interner. intern ( "test" ) ;
166- let b = interner. intern_owned ( "test" . to_string ( ) ) ;
167-
168- assert_eq ! ( a, b) ;
169- assert_eq ! ( interner. len( ) , 1 ) ;
170- }
171-
172- #[ test]
173- fn symbols_are_copy ( ) {
174- let mut interner = Interner :: new ( ) ;
175- let sym = interner. intern ( "x" ) ;
176-
177- let copy = sym;
178- assert_eq ! ( sym, copy) ;
179- }
180-
181- #[ test]
182- fn symbol_ordering_is_insertion_order ( ) {
183- let mut interner = Interner :: new ( ) ;
184-
185- let z = interner. intern ( "z" ) ;
186- let a = interner. intern ( "a" ) ;
187-
188- // z was inserted first, so z < a by insertion order
189- assert ! ( z < a) ;
190- }
191-
192- #[ test]
193- fn to_blob_produces_correct_format ( ) {
194- let mut interner = Interner :: new ( ) ;
195- interner. intern ( "id" ) ;
196- interner. intern ( "foo" ) ;
197-
198- let ( blob, offsets) = interner. to_blob ( ) ;
199-
200- assert_eq ! ( blob, b"idfoo" ) ;
201- assert_eq ! ( offsets, vec![ 0 , 2 , 5 ] ) ;
202-
203- // Verify we can reconstruct strings
204- let s0 = & blob[ offsets[ 0 ] as usize ..offsets[ 1 ] as usize ] ;
205- let s1 = & blob[ offsets[ 1 ] as usize ..offsets[ 2 ] as usize ] ;
206- assert_eq ! ( s0, b"id" ) ;
207- assert_eq ! ( s1, b"foo" ) ;
208- }
209-
210- #[ test]
211- fn to_blob_empty ( ) {
212- let interner = Interner :: new ( ) ;
213- let ( blob, offsets) = interner. to_blob ( ) ;
214-
215- assert ! ( blob. is_empty( ) ) ;
216- assert_eq ! ( offsets, vec![ 0 ] ) ; // just the sentinel
217- }
218-
219- #[ test]
220- fn iter_yields_all_strings ( ) {
221- let mut interner = Interner :: new ( ) ;
222- let a = interner. intern ( "alpha" ) ;
223- let b = interner. intern ( "beta" ) ;
224-
225- let items: Vec < _ > = interner. iter ( ) . collect ( ) ;
226- assert_eq ! ( items, vec![ ( a, "alpha" ) , ( b, "beta" ) ] ) ;
227- }
228-
229- #[ test]
230- fn symbol_from_raw_roundtrip ( ) {
231- let sym = Symbol :: from_raw ( 42 ) ;
232- assert_eq ! ( sym. as_u32( ) , 42 ) ;
233- }
234- }
0 commit comments