MCPcopy Create free account
hub / github.com/csskit/csskit / tokenizes_basic_selector

Function tokenizes_basic_selector

crates/css_lexer/tests/tests.rs:334–413  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

332
333#[test]
334fn tokenizes_basic_selector() {
335 let source = ".foo:bar[baz=bing]";
336 let mut lexer = Lexer::new(&EmptyAtomSet::ATOMS, source);
337 assert_eq!(lexer.offset(), 0);
338 {
339 let token = lexer.advance();
340 assert_eq!(token, Kind::Delim);
341 assert_eq!(token, '.');
342 assert_eq!(lexer.offset(), 1);
343 }
344 {
345 let token = lexer.advance();
346 assert_eq!(token, Kind::Ident);
347 let c = token.with_cursor(SourceOffset(1));
348 let str = c.str_slice(source);
349 let sc = SourceCursor::from(c, str);
350 assert_eq!(str, "foo");
351 assert_eq!(sc.parse(Global), "foo");
352 assert_eq!(lexer.offset(), 4);
353 }
354 {
355 let token = lexer.advance();
356 assert_eq!(token, Kind::Colon);
357 assert_eq!(token, ':');
358 assert_eq!(lexer.offset(), 5);
359 }
360 {
361 let token = lexer.advance();
362 assert_eq!(token, Kind::Ident);
363 let c = token.with_cursor(SourceOffset(5));
364 let str = c.str_slice(source);
365 let sc = SourceCursor::from(c, str);
366 assert_eq!(str, "bar");
367 assert_eq!(sc.parse(Global), "bar");
368 assert_eq!(lexer.offset(), 8);
369 }
370 {
371 let token = lexer.advance();
372 assert_eq!(token, Kind::LeftSquare);
373 assert_eq!(token, '[');
374 assert_eq!(lexer.offset(), 9);
375 }
376 {
377 let token = lexer.advance();
378 assert_eq!(token, Kind::Ident);
379 let c = token.with_cursor(SourceOffset(9));
380 let str = c.str_slice(source);
381 let sc = SourceCursor::from(c, str);
382 assert_eq!(str, "baz");
383 assert_eq!(sc.parse(Global), "baz");
384 assert_eq!(lexer.offset(), 12);
385 }
386 {
387 let token = lexer.advance();
388 assert_eq!(token, Kind::Delim);
389 assert_eq!(token, '=');
390 assert_eq!(lexer.offset(), 13);
391 }

Callers

nothing calls this directly

Calls 4

SourceOffsetClass · 0.85
advanceMethod · 0.80
with_cursorMethod · 0.80
str_sliceMethod · 0.80

Tested by

no test coverage detected