cairo-language-server 2.20.0

The Cairo Language Server
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

use crate::project::model::configs_registry::package_config::merge_serde_json_value;

#[derive(Default, Serialize, Deserialize, PartialEq, Debug)]
struct Structured {
    a: bool,
    b: Nested,
}

#[derive(Default, Serialize, Deserialize, PartialEq, Debug)]
struct Nested {
    c: u8,
}

#[test]
fn merge_json_values_structured() {
    let mut a = serde_json::to_value(Structured::default()).unwrap();
    let b = serde_json::to_value(Structured { a: false, b: Nested { c: 10 } }).unwrap();

    merge_serde_json_value(&mut a, &b);

    let merged: Structured = serde_json::from_value(a).unwrap();
    assert_eq!(merged, Structured { a: false, b: Nested { c: 10 } })
}

type Unstructured = HashMap<u8, u8>;

#[test]
fn merge_json_values_unstructured() {
    let mut a = serde_json::to_value(Unstructured::from([(1, 1), (3, 2)])).unwrap();
    let b = serde_json::to_value(Unstructured::from([(2, 2), (3, 3)])).unwrap();

    merge_serde_json_value(&mut a, &b);

    let merged: Unstructured = serde_json::from_value(a).unwrap();
    assert_eq!(merged, Unstructured::from([(1, 1), (2, 2), (3, 3)]));
}