// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![cfg(feature = "serde")]

use serde_test::Token;
use uguid::{guid, Guid};

#[test]
fn test_serde() {
    let guid = guid!("01234567-89ab-cdef-0123-456789abcdef");

    serde_test::assert_tokens(
        &guid,
        &[Token::Str("01234567-89ab-cdef-0123-456789abcdef")],
    );

    serde_test::assert_de_tokens_error::<Guid>(
        &[Token::Str("1234")],
        "GUID string has wrong length (expected 36 bytes)",
    );

    serde_test::assert_de_tokens_error::<Guid>(
        &[Token::U64(1234)],
        "invalid type: integer `1234`, expected a string in the format \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"");
}
