Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  pickfirst.rs   Sprache: unbekannt

 
use super::*;
use serde_with::{
    formats::{CommaSeparator, SpaceSeparator},
    PickFirst, StringWithSeparator,
};

#[test]
fn test_pick_first_two() {
    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S(#[serde_as(as = "PickFirst<(_, DisplayFromStr)>")] u32);

    is_equal(S(123), expect![[r#"123"#]]);
    check_deserialization(S(123), r#""123""#);
    check_error_deserialization::<S>(
        r#""Abc""#,
        expect![[r#"
            PickFirst could not deserialize any variant:
              First: invalid type: string "Abc", expected u32
              Second: invalid digit found in string"#]],
    );

    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S2(#[serde_as(as = "PickFirst<(DisplayFromStr, _)>")] u32);

    is_equal(S2(123), expect![[r#""123""#]]);
    check_deserialization(S2(123), r#"123"#);

    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S3(
        #[serde_as(as = "PickFirst<(_, StringWithSeparator::<SpaceSeparator, String>,)>")]
        Vec<String>,
    );
    is_equal(
        S3(vec!["A".to_string(), "B".to_string(), "C".to_string()]),
        expect![[r#"
            [
              "A",
              "B",
              "C"
            ]"#]],
    );
    check_deserialization(
        S3(vec!["A".to_string(), "B".to_string(), "C".to_string()]),
        r#""A B C""#,
    );

    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S4(
        #[serde_as(as = "PickFirst<(StringWithSeparator::<CommaSeparator, String>, _,)>")]
        Vec<String>,
    );
    is_equal(
        S4(vec!["A".to_string(), "B".to_string(), "C".to_string()]),
        expect![[r#""A,B,C""#]],
    );
    check_deserialization(
        S4(vec!["A".to_string(), "B".to_string(), "C".to_string()]),
        r#"["A", "B", "C"]"#,
    );
}

#[test]
fn test_pick_first_three() {
    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S(
        #[serde_as(
            as = "PickFirst<(_, Vec<DisplayFromStr>, StringWithSeparator::<CommaSeparator, u32>)>"
        )]
        Vec<u32>,
    );
    is_equal(
        S(vec![1, 2, 3]),
        expect![[r#"
        [
          1,
          2,
          3
        ]"#]],
    );
    check_deserialization(
        S(vec![1, 2, 3]),
        r#"
        [
          "1",
          "2",
          "3"
        ]"#,
    );
    check_deserialization(S(vec![1, 2, 3]), r#""1,2,3""#);
    check_error_deserialization::<S>(
        r#""Abc""#,
        expect![[r#"
            PickFirst could not deserialize any variant:
              First: invalid type: string "Abc", expected a sequence
              Second: invalid type: string "Abc", expected a sequence
              Third: invalid digit found in string"#]],
    );

    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S2(
        #[serde_as(
            as = "PickFirst<(StringWithSeparator::<CommaSeparator, u32>, _, Vec<DisplayFromStr>)>"
        )]
        Vec<u32>,
    );
    is_equal(S2(vec![1, 2, 3]), expect![[r#""1,2,3""#]]);
    check_deserialization(
        S2(vec![1, 2, 3]),
        r#"
        [
          "1",
          "2",
          "3"
        ]"#,
    );
    check_deserialization(
        S2(vec![1, 2, 3]),
        r#"
        [
          1,
          2,
          3
        ]"#,
    );
}

#[test]
fn test_pick_first_four() {
    #[serde_as]
    #[derive(Debug, Serialize, Deserialize, PartialEq)]
    struct S(#[serde_as(as = "PickFirst<(_, _, _, _)>")] u32);

    is_equal(S(123), expect![[r#"123"#]]);
    check_error_deserialization::<S>(
        r#""Abc""#,
        expect![[r#"
            PickFirst could not deserialize any variant:
              First: invalid type: string "Abc", expected u32
              Second: invalid type: string "Abc", expected u32
              Third: invalid type: string "Abc", expected u32
              Fourth: invalid type: string "Abc", expected u32"#]],
    );
}

[ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge