31 lines
1.2 KiB
Rust
31 lines
1.2 KiB
Rust
|
|
use crate::syntax::sugar_config::{SugarConfig, SugarLevel};
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn sugar_config_env_overrides_toml() {
|
||
|
|
use std::{env, fs};
|
||
|
|
let dir = tempfile::tempdir().unwrap();
|
||
|
|
let file = dir.path().join("nyash.toml");
|
||
|
|
fs::write(&file, "[syntax]\nsugar_level='full'\n").unwrap();
|
||
|
|
env::set_var("NYASH_SYNTAX_SUGAR_LEVEL", "basic");
|
||
|
|
let cfg = SugarConfig::from_env_or_toml(&file);
|
||
|
|
env::remove_var("NYASH_SYNTAX_SUGAR_LEVEL");
|
||
|
|
assert_eq!(cfg.level, SugarLevel::Basic);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn tokenizer_has_basic_sugar_tokens() {
|
||
|
|
use crate::tokenizer::{NyashTokenizer, TokenType};
|
||
|
|
let mut t = NyashTokenizer::new("|> ?.? ?? += -= *= /= ..");
|
||
|
|
let toks = t.tokenize().unwrap();
|
||
|
|
let has = |p: fn(&TokenType) -> bool| -> bool { toks.iter().any(|k| p(&k.token_type)) };
|
||
|
|
assert!(has(|k| matches!(k, TokenType::PIPE_FORWARD)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::QMARK_DOT)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::QMARK_QMARK)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::PLUS_ASSIGN)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::MINUS_ASSIGN)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::MUL_ASSIGN)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::DIV_ASSIGN)));
|
||
|
|
assert!(has(|k| matches!(k, TokenType::RANGE)));
|
||
|
|
}
|
||
|
|
|