use oak_core::{Lexer, ParseSession, SourceText};
use oak_cpp::{CppLanguage, CppLexer};
#[test]
fn test_cpp_lexer_basic() {
let source = SourceText::new("int main() { return 0 }");
let language = CppLanguage::new();
let lexer = CppLexer::new(&language);
let mut session = ParseSession::<CppLanguage>::new(16);
let result = lexer.lex(&source, &[], &mut session);
assert!(result.diagnostics.is_empty());
println!("✓ C++ basic lexer test passed")
}
#[test]
fn test_cpp_lexer_keywords() {
let source = SourceText::new("class MyClass { public: int value }");
let language = CppLanguage::new();
let lexer = CppLexer::new(&language);
let mut session = ParseSession::<CppLanguage>::new(16);
let result = lexer.lex(&source, &[], &mut session);
assert!(result.diagnostics.is_empty());
println!("✓ C++ keyword lexer test passed")
}
#[test]
fn test_cpp_lexer_operators() {
let source = SourceText::new("a += b * c / d - e;");
let language = CppLanguage::new();
let lexer = CppLexer::new(&language);
let mut session = ParseSession::<CppLanguage>::new(16);
let result = lexer.lex(&source, &[], &mut session);
assert!(result.diagnostics.is_empty());
println!("✓ C++ operator lexer test passed")
}
#[test]
fn test_cpp_lexer_strings() {
let source = SourceText::new(r#"const char* str = "Hello, World!";"#);
let language = CppLanguage::new();
let lexer = CppLexer::new(&language);
let mut session = ParseSession::<CppLanguage>::new(16);
let result = lexer.lex(&source, &[], &mut session);
assert!(result.diagnostics.is_empty());
println!("✓ C++ string lexer test passed")
}
#[test]
fn test_cpp_lexer_comments() {
let source = SourceText::new("// Single line comment\n/* Multi line comment */\nint x;");
let language = CppLanguage::new();
let lexer = CppLexer::new(&language);
let mut session = ParseSession::<CppLanguage>::new(16);
let result = lexer.lex(&source, &[], &mut session);
assert!(result.diagnostics.is_empty());
println!("✓ C++ comment lexer test passed")
}