use serde::{Deserialize, Serialize};
use crate::cairo_compiler_version::CAIRO1_COMPILER_VERSION;
#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
enum DependencyValue {
String(String),
Object { version: String },
}
#[derive(Debug, Serialize, Deserialize)]
struct CairoLangCasmDependency {
#[serde(rename = "cairo-lang-casm")]
cairo_lang_casm: DependencyValue,
}
#[derive(Debug, Serialize, Deserialize)]
struct WorkspaceFields {
dependencies: CairoLangCasmDependency,
}
#[derive(Debug, Serialize, Deserialize)]
struct CargoToml {
workspace: WorkspaceFields,
}
#[test]
fn test_current_compiler_version() {
let cargo_toml: CargoToml = toml::from_str(include_str!("../../../Cargo.toml")).unwrap();
let actual_version = match cargo_toml.workspace.dependencies.cairo_lang_casm {
DependencyValue::String(version) | DependencyValue::Object { version } => {
version.trim_start_matches("=").to_string()
}
};
assert_eq!(CAIRO1_COMPILER_VERSION, actual_version);
}