use oak_core::{Parser, parser::ParseSession};
use oak_java::{JavaLanguage, JavaParser};
use std::time::Instant;
#[test]
fn test_java_parser_performance() {
let mut large_java_file = String::new();
large_java_file.push_str(
"package com.example;
",
);
large_java_file.push_str(
"import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
",
);
large_java_file.push_str(
"public class LargeClass {
",
);
for i in 0..1000 {
large_java_file.push_str(&format!(
" private int field{};
",
i
));
}
for i in 0..1000 {
large_java_file.push_str(&format!(
" public void method{}() {{
for (int j = 0; j < 100; j++) {{
field{} += j;
}}
}}
",
i, i
));
}
large_java_file.push_str(
"}
",
);
println!("Generated Java file size: {} bytes", large_java_file.len());
let language = JavaLanguage {};
let parser = JavaParser::new(&language);
let mut session = ParseSession::new(1024);
let start = Instant::now();
let result = parser.parse(large_java_file.as_str(), &[], &mut session);
let duration = start.elapsed();
println!("Parsing took: {:?}", duration);
println!("Parse result: {:?}", result.result.is_ok());
assert!(result.result.is_ok());
}