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

Function peek_and_next

crates/css_parse/src/parser.rs:456–493  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

454
455#[test]
456fn peek_and_next() {
457 let str = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21";
458 let bump = bumpalo::Bump::default();
459 let lexer = css_lexer::Lexer::new(&css_lexer::EmptyAtomSet::ATOMS, &str);
460 let mut p = Parser::new(&bump, &str, lexer);
461 assert_eq!(p.at_end(), false);
462 assert_eq!(p.offset(), 0);
463 for n in 0..=1 {
464 let c = p.checkpoint();
465 for i in 0..=19 {
466 let c = p.peek_n(1);
467 assert_eq!(c.token(), Kind::Number);
468 assert_eq!(c.token().value(), i as f32);
469 let c = p.peek_n(2);
470 assert_eq!(c.token(), Kind::Number);
471 assert_eq!(c.token().value(), (i + 1) as f32);
472 let c = p.peek_n(3);
473 assert_eq!(c.token(), Kind::Number);
474 assert_eq!(c.token().value(), (i + 2) as f32);
475 let c = p.next();
476 assert_eq!(c.token().value(), i as f32);
477 let c = p.peek_n(1);
478 assert_eq!(c.token(), Kind::Number);
479 assert_eq!(c.token().value(), (i + 1) as f32);
480 }
481 if n == 0 {
482 p.rewind(c)
483 }
484 }
485 let c = p.next();
486 assert_eq!(c.token(), Kind::Number);
487 assert_eq!(c.token().value(), 20.0);
488 let c = p.next();
489 assert_eq!(c.token(), Kind::Number);
490 assert_eq!(c.token().value(), 21.0);
491 let c = p.next();
492 assert_eq!(c.token(), Kind::Eof);
493}
494
495#[test]
496fn peek_and_next_with_whitsespace() {

Callers

nothing calls this directly

Calls 4

peek_nMethod · 0.80
checkpointMethod · 0.45
nextMethod · 0.45
rewindMethod · 0.45

Tested by

no test coverage detected