mod extractor;
mod mapper;
mod parser_impl;
mod visitor;
pub use parser_impl::CSharpParser;
#[cfg(test)]
mod tests {
use super::*;
use codegraph::CodeGraph;
use codegraph_parser_api::CodeParser;
use std::path::Path;
#[test]
fn test_parser_creation() {
let parser = CSharpParser::new();
assert_eq!(parser.language(), "csharp");
}
#[test]
fn test_parse_simple_source() {
let parser = CSharpParser::new();
let mut graph = CodeGraph::in_memory().unwrap();
let source = r#"
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
"#;
let result = parser.parse_source(source, Path::new("Calculator.cs"), &mut graph);
assert!(result.is_ok());
let file_info = result.unwrap();
assert_eq!(file_info.classes.len(), 1);
let class_node = graph.get_node(file_info.classes[0]).unwrap();
assert_eq!(
class_node.properties.get("name"),
Some(&codegraph::PropertyValue::String("Calculator".to_string()))
);
}
}