proc_strarray 1.7.0

Create const u8 array from str or byte str literal
Documentation
// Copyright 2024 Radim Kolar <hsn@sendmail.cz>
//
// SPDX-License-Identifier: MIT
// or
// SPDX-License-Identifier: Apache-2.0

#![allow(non_snake_case)]

/*   Unit tests for parsing MacroArgumentsRP   */
/*   Used for str_repeat! macro */

use super::StrOrByte as MacroArguments;

// parse tests

#[test]
fn empty() {
   let rc = syn::parse_str::<MacroArguments>(r"");
   assert! (rc.is_err());
}

#[test]
fn Ident() {
   let rc = syn::parse_str::<MacroArguments>(r"hajo");
   assert! (rc.is_err());
}

#[test]
fn Str() {
   let rc = syn::parse_str::<MacroArguments>(r#" "hajo" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   assert_eq! ( rc, "hajo" );
   assert! ( matches!(rc, MacroArguments::str(_)));
}

#[test]
fn ByteStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" b"hajo" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   assert_eq! ( rc, &b"hajo"[..] );
   assert! ( matches!(rc, MacroArguments::byte(_)));
}

#[test]
fn BinaryByteStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" b"\x90\x91" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   assert_eq! ( rc, &b"\x90\x91"[..] );
   assert! ( matches!(rc, MacroArguments::byte(_)));
}

// repeat

#[test]
fn repeatByteStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" b"\x90\x91" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   let rc = rc.repeat(1);
   assert_eq! ( rc, &b"\x90\x91"[..] );
   let rc = rc.repeat(2);
   assert_eq! ( rc, &b"\x90\x91\x90\x91"[..] );
}

#[test]
fn repeatStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" "zx" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   let rc = rc.repeat(1);
   assert_eq! ( rc, "zx" );
   let rc = rc.repeat(2);
   assert_eq! ( rc, "zxzx" );
}

// add0

#[test]
fn add0Str() {
   let rc = syn::parse_str::<MacroArguments>(r#" "zx" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   assert_eq! ( rc, "zx" );
   let rc = rc.add0();
   assert_eq! ( rc, "zx\0" );
}

#[test]
fn add0ByteStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" b"\x90\x91" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   assert_eq! ( rc, &b"\x90\x91"[..] );
   let rc = rc.add0();
   assert_eq! ( rc, &b"\x90\x91\0"[..] );
}

// as_bytes
#[test]
fn as_bytesStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" "zx" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   let b = rc.as_bytes();
   assert_eq! ( b.len(), 2 );
   assert_eq! ( b"zx", b.as_slice() );
}

// as_bytes
#[test]
fn as_bytesByteStr() {
   let rc = syn::parse_str::<MacroArguments>(r#" b"zx" "#);
   assert! (rc.is_ok());
   let rc: MacroArguments = rc.unwrap();
   let b = rc.as_bytes();
   assert_eq! ( b.len(), 2 );
   assert_eq! ( b"zx", b.as_slice() );
}