use super::simple_service::SimpleContractService;
use super::{AnalyzeComplexityContract, AnalyzeSatdContract, AnalyzeDeadCodeContract, AnalyzeTdgContract, AnalyzeLintHotspotContract, QualityGateContract, RefactorAutoContract};
use anyhow::Result;
use serde_json::Value;
use std::sync::Arc;
pub struct RealContractService {
inner: Arc<SimpleContractService>,
}
impl RealContractService {
pub fn new() -> Result<Self> {
Ok(Self {
inner: Arc::new(SimpleContractService::new()?),
})
}
pub async fn analyze_complexity(&self, contract: AnalyzeComplexityContract) -> Result<Value> {
self.inner.analyze_complexity(contract).await
}
pub async fn analyze_satd(&self, contract: AnalyzeSatdContract) -> Result<Value> {
self.inner.analyze_satd(contract).await
}
pub async fn analyze_dead_code(&self, contract: AnalyzeDeadCodeContract) -> Result<Value> {
self.inner.analyze_dead_code(contract).await
}
pub async fn analyze_tdg(&self, contract: AnalyzeTdgContract) -> Result<Value> {
self.inner.analyze_tdg(contract).await
}
pub async fn analyze_lint_hotspot(
&self,
contract: AnalyzeLintHotspotContract,
) -> Result<Value> {
self.inner.analyze_lint_hotspot(contract).await
}
pub async fn quality_gate(&self, contract: QualityGateContract) -> Result<Value> {
self.inner.quality_gate(contract).await
}
pub async fn refactor_auto(&self, contract: RefactorAutoContract) -> Result<Value> {
self.inner.refactor_auto(contract).await
}
}
impl Default for RealContractService {
fn default() -> Self {
Self::new().expect("Failed to create RealContractService")
}
}
#[cfg(test)]
mod property_tests {
use proptest::prelude::*;
proptest! {
#[test]
fn basic_property_stability(_input in ".*") {
prop_assert!(true);
}
#[test]
fn module_consistency_check(_x in 0u32..1000) {
prop_assert!(_x < 1001);
}
}
}