use cairo_lang_filesystem::ids::{FileId, FileKind, FileLongId, VirtualFile};
use cairo_lang_test_utils::parse_test_file::TestRunnerResult;
use cairo_lang_utils::ordered_hash_map::OrderedHashMap;
use cairo_lang_utils::Intern;
use smol_str::SmolStr;
use crate::utils::{get_syntax_root_and_diagnostics, SimpleParserDatabase};
pub fn get_diagnostics(
inputs: &OrderedHashMap<String, String>,
_args: &OrderedHashMap<String, String>,
) -> TestRunnerResult {
let db = &SimpleParserDatabase::default();
let code = &inputs["cairo_code"];
let file_id = create_virtual_file(db, "dummy_file.cairo", code);
let (_, diagnostics) = get_syntax_root_and_diagnostics(db, file_id, code);
TestRunnerResult::success(OrderedHashMap::from([(
"expected_diagnostics".into(),
diagnostics.format(db),
)]))
}
pub fn create_virtual_file(
db: &SimpleParserDatabase,
file_name: impl Into<SmolStr>,
content: &str,
) -> FileId {
FileLongId::Virtual(VirtualFile {
parent: None,
name: file_name.into(),
content: content.into(),
code_mappings: [].into(),
kind: FileKind::Module,
})
.intern(db)
}