Files
hakorune/src/tests/sugar_basic_test.rs

30 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::PipeForward)));
assert!(has(|k| matches!(k, TokenType::QmarkDot)));
assert!(has(|k| matches!(k, TokenType::QmarkQmark)));
assert!(has(|k| matches!(k, TokenType::PlusAssign)));
assert!(has(|k| matches!(k, TokenType::MinusAssign)));
assert!(has(|k| matches!(k, TokenType::MulAssign)));
assert!(has(|k| matches!(k, TokenType::DivAssign)));
assert!(has(|k| matches!(k, TokenType::RANGE)));
}