use crate::{escape_into, escaped_len, escaped_max_len, EscapeIntoError};
#[cfg(feature = "alloc")]
use crate::escape;
#[cfg(feature = "alloc")]
#[allow(clippy::too_many_lines)]
#[test]
fn test_escape_all() {
assert_eq!(escape([0x00]), br"\0");
assert_eq!(escape([0x01]), br"\x01");
assert_eq!(escape([0x02]), br"\x02");
assert_eq!(escape([0x03]), br"\x03");
assert_eq!(escape([0x04]), br"\x04");
assert_eq!(escape([0x05]), br"\x05");
assert_eq!(escape([0x06]), br"\x06");
assert_eq!(escape([0x07]), br"\x07");
assert_eq!(escape([0x08]), br"\x08");
assert_eq!(escape([0x09]), br"\t");
assert_eq!(escape([0x0a]), br"\n");
assert_eq!(escape([0x0b]), br"\x0b");
assert_eq!(escape([0x0c]), br"\x0c");
assert_eq!(escape([0x0d]), br"\r");
assert_eq!(escape([0x0e]), br"\x0e");
assert_eq!(escape([0x0f]), br"\x0f");
assert_eq!(escape([0x10]), br"\x10");
assert_eq!(escape([0x11]), br"\x11");
assert_eq!(escape([0x12]), br"\x12");
assert_eq!(escape([0x13]), br"\x13");
assert_eq!(escape([0x14]), br"\x14");
assert_eq!(escape([0x15]), br"\x15");
assert_eq!(escape([0x16]), br"\x16");
assert_eq!(escape([0x17]), br"\x17");
assert_eq!(escape([0x18]), br"\x18");
assert_eq!(escape([0x19]), br"\x19");
assert_eq!(escape([0x1a]), br"\x1a");
assert_eq!(escape([0x1b]), br"\x1b");
assert_eq!(escape([0x1c]), br"\x1c");
assert_eq!(escape([0x1d]), br"\x1d");
assert_eq!(escape([0x1e]), br"\x1e");
assert_eq!(escape([0x1f]), br"\x1f");
assert_eq!(escape([0x20] ), br" ");
assert_eq!(escape([0x21] ), br"!");
assert_eq!(escape([0x22] ), br#"""#);
assert_eq!(escape([0x23] ), br"#");
assert_eq!(escape([0x24] ), br"$");
assert_eq!(escape([0x25] ), br"%");
assert_eq!(escape([0x26] ), br"&");
assert_eq!(escape([0x27] ), br"'");
assert_eq!(escape([0x28] ), br"(");
assert_eq!(escape([0x29] ), br")");
assert_eq!(escape([0x2a] ), br"*");
assert_eq!(escape([0x2b] ), br"+");
assert_eq!(escape([0x2c] ), br",");
assert_eq!(escape([0x2d] ), br"-");
assert_eq!(escape([0x2e] ), br".");
assert_eq!(escape([0x2f] ), br"/");
assert_eq!(escape([0x30] ), br"0");
assert_eq!(escape([0x31] ), br"1");
assert_eq!(escape([0x32] ), br"2");
assert_eq!(escape([0x33] ), br"3");
assert_eq!(escape([0x34] ), br"4");
assert_eq!(escape([0x35] ), br"5");
assert_eq!(escape([0x36] ), br"6");
assert_eq!(escape([0x37] ), br"7");
assert_eq!(escape([0x38] ), br"8");
assert_eq!(escape([0x39] ), br"9");
assert_eq!(escape([0x3a] ), br":");
assert_eq!(escape([0x3b] ), br";");
assert_eq!(escape([0x3c] ), br"<");
assert_eq!(escape([0x3d] ), br"=");
assert_eq!(escape([0x3e] ), br">");
assert_eq!(escape([0x3f] ), br"?");
assert_eq!(escape([0x40] ), br"@");
assert_eq!(escape([0x41] ), br"A");
assert_eq!(escape([0x42] ), br"B");
assert_eq!(escape([0x43] ), br"C");
assert_eq!(escape([0x44] ), br"D");
assert_eq!(escape([0x45] ), br"E");
assert_eq!(escape([0x46] ), br"F");
assert_eq!(escape([0x47] ), br"G");
assert_eq!(escape([0x48] ), br"H");
assert_eq!(escape([0x49] ), br"I");
assert_eq!(escape([0x4a] ), br"J");
assert_eq!(escape([0x4b] ), br"K");
assert_eq!(escape([0x4c] ), br"L");
assert_eq!(escape([0x4d] ), br"M");
assert_eq!(escape([0x4e] ), br"N");
assert_eq!(escape([0x4f] ), br"O");
assert_eq!(escape([0x50] ), br"P");
assert_eq!(escape([0x51] ), br"Q");
assert_eq!(escape([0x52] ), br"R");
assert_eq!(escape([0x53] ), br"S");
assert_eq!(escape([0x54] ), br"T");
assert_eq!(escape([0x55] ), br"U");
assert_eq!(escape([0x56] ), br"V");
assert_eq!(escape([0x57] ), br"W");
assert_eq!(escape([0x58] ), br"X");
assert_eq!(escape([0x59] ), br"Y");
assert_eq!(escape([0x5a] ), br"Z");
assert_eq!(escape([0x5b] ), br"[");
assert_eq!(escape([0x5c] ), br"\\");
assert_eq!(escape([0x5d] ), br"]");
assert_eq!(escape([0x5e] ), br"^");
assert_eq!(escape([0x5f] ), br"_");
assert_eq!(escape([0x60] ), br"`");
assert_eq!(escape([0x61] ), br"a");
assert_eq!(escape([0x62] ), br"b");
assert_eq!(escape([0x63] ), br"c");
assert_eq!(escape([0x64] ), br"d");
assert_eq!(escape([0x65] ), br"e");
assert_eq!(escape([0x66] ), br"f");
assert_eq!(escape([0x67] ), br"g");
assert_eq!(escape([0x68] ), br"h");
assert_eq!(escape([0x69] ), br"i");
assert_eq!(escape([0x6a] ), br"j");
assert_eq!(escape([0x6b] ), br"k");
assert_eq!(escape([0x6c] ), br"l");
assert_eq!(escape([0x6d] ), br"m");
assert_eq!(escape([0x6e] ), br"n");
assert_eq!(escape([0x6f] ), br"o");
assert_eq!(escape([0x70] ), br"p");
assert_eq!(escape([0x71] ), br"q");
assert_eq!(escape([0x72] ), br"r");
assert_eq!(escape([0x73] ), br"s");
assert_eq!(escape([0x74] ), br"t");
assert_eq!(escape([0x75] ), br"u");
assert_eq!(escape([0x76] ), br"v");
assert_eq!(escape([0x77] ), br"w");
assert_eq!(escape([0x78] ), br"x");
assert_eq!(escape([0x79] ), br"y");
assert_eq!(escape([0x7a] ), br"z");
assert_eq!(escape([0x7b] ), br"{");
assert_eq!(escape([0x7c] ), br"|");
assert_eq!(escape([0x7d] ), br"}");
assert_eq!(escape([0x7e] ), br"~");
assert_eq!(escape([0x7f]), br"\x7f");
assert_eq!(escape([0x80]), br"\x80");
assert_eq!(escape([0x81]), br"\x81");
assert_eq!(escape([0x82]), br"\x82");
assert_eq!(escape([0x83]), br"\x83");
assert_eq!(escape([0x84]), br"\x84");
assert_eq!(escape([0x85]), br"\x85");
assert_eq!(escape([0x86]), br"\x86");
assert_eq!(escape([0x87]), br"\x87");
assert_eq!(escape([0x88]), br"\x88");
assert_eq!(escape([0x89]), br"\x89");
assert_eq!(escape([0x8a]), br"\x8a");
assert_eq!(escape([0x8b]), br"\x8b");
assert_eq!(escape([0x8c]), br"\x8c");
assert_eq!(escape([0x8d]), br"\x8d");
assert_eq!(escape([0x8e]), br"\x8e");
assert_eq!(escape([0x8f]), br"\x8f");
assert_eq!(escape([0x90]), br"\x90");
assert_eq!(escape([0x91]), br"\x91");
assert_eq!(escape([0x92]), br"\x92");
assert_eq!(escape([0x93]), br"\x93");
assert_eq!(escape([0x94]), br"\x94");
assert_eq!(escape([0x95]), br"\x95");
assert_eq!(escape([0x96]), br"\x96");
assert_eq!(escape([0x97]), br"\x97");
assert_eq!(escape([0x98]), br"\x98");
assert_eq!(escape([0x99]), br"\x99");
assert_eq!(escape([0x9a]), br"\x9a");
assert_eq!(escape([0x9b]), br"\x9b");
assert_eq!(escape([0x9c]), br"\x9c");
assert_eq!(escape([0x9d]), br"\x9d");
assert_eq!(escape([0x9e]), br"\x9e");
assert_eq!(escape([0x9f]), br"\x9f");
assert_eq!(escape([0xa0]), br"\xa0");
assert_eq!(escape([0xa1]), br"\xa1");
assert_eq!(escape([0xa2]), br"\xa2");
assert_eq!(escape([0xa3]), br"\xa3");
assert_eq!(escape([0xa4]), br"\xa4");
assert_eq!(escape([0xa5]), br"\xa5");
assert_eq!(escape([0xa6]), br"\xa6");
assert_eq!(escape([0xa7]), br"\xa7");
assert_eq!(escape([0xa8]), br"\xa8");
assert_eq!(escape([0xa9]), br"\xa9");
assert_eq!(escape([0xaa]), br"\xaa");
assert_eq!(escape([0xab]), br"\xab");
assert_eq!(escape([0xac]), br"\xac");
assert_eq!(escape([0xad]), br"\xad");
assert_eq!(escape([0xae]), br"\xae");
assert_eq!(escape([0xaf]), br"\xaf");
assert_eq!(escape([0xb0]), br"\xb0");
assert_eq!(escape([0xb1]), br"\xb1");
assert_eq!(escape([0xb2]), br"\xb2");
assert_eq!(escape([0xb3]), br"\xb3");
assert_eq!(escape([0xb4]), br"\xb4");
assert_eq!(escape([0xb5]), br"\xb5");
assert_eq!(escape([0xb6]), br"\xb6");
assert_eq!(escape([0xb7]), br"\xb7");
assert_eq!(escape([0xb8]), br"\xb8");
assert_eq!(escape([0xb9]), br"\xb9");
assert_eq!(escape([0xba]), br"\xba");
assert_eq!(escape([0xbb]), br"\xbb");
assert_eq!(escape([0xbc]), br"\xbc");
assert_eq!(escape([0xbd]), br"\xbd");
assert_eq!(escape([0xbe]), br"\xbe");
assert_eq!(escape([0xbf]), br"\xbf");
assert_eq!(escape([0xc0]), br"\xc0");
assert_eq!(escape([0xc1]), br"\xc1");
assert_eq!(escape([0xc2]), br"\xc2");
assert_eq!(escape([0xc3]), br"\xc3");
assert_eq!(escape([0xc4]), br"\xc4");
assert_eq!(escape([0xc5]), br"\xc5");
assert_eq!(escape([0xc6]), br"\xc6");
assert_eq!(escape([0xc7]), br"\xc7");
assert_eq!(escape([0xc8]), br"\xc8");
assert_eq!(escape([0xc9]), br"\xc9");
assert_eq!(escape([0xca]), br"\xca");
assert_eq!(escape([0xcb]), br"\xcb");
assert_eq!(escape([0xcc]), br"\xcc");
assert_eq!(escape([0xcd]), br"\xcd");
assert_eq!(escape([0xce]), br"\xce");
assert_eq!(escape([0xcf]), br"\xcf");
assert_eq!(escape([0xd0]), br"\xd0");
assert_eq!(escape([0xd1]), br"\xd1");
assert_eq!(escape([0xd2]), br"\xd2");
assert_eq!(escape([0xd3]), br"\xd3");
assert_eq!(escape([0xd4]), br"\xd4");
assert_eq!(escape([0xd5]), br"\xd5");
assert_eq!(escape([0xd6]), br"\xd6");
assert_eq!(escape([0xd7]), br"\xd7");
assert_eq!(escape([0xd8]), br"\xd8");
assert_eq!(escape([0xd9]), br"\xd9");
assert_eq!(escape([0xda]), br"\xda");
assert_eq!(escape([0xdb]), br"\xdb");
assert_eq!(escape([0xdc]), br"\xdc");
assert_eq!(escape([0xdd]), br"\xdd");
assert_eq!(escape([0xde]), br"\xde");
assert_eq!(escape([0xdf]), br"\xdf");
assert_eq!(escape([0xe0]), br"\xe0");
assert_eq!(escape([0xe1]), br"\xe1");
assert_eq!(escape([0xe2]), br"\xe2");
assert_eq!(escape([0xe3]), br"\xe3");
assert_eq!(escape([0xe4]), br"\xe4");
assert_eq!(escape([0xe5]), br"\xe5");
assert_eq!(escape([0xe6]), br"\xe6");
assert_eq!(escape([0xe7]), br"\xe7");
assert_eq!(escape([0xe8]), br"\xe8");
assert_eq!(escape([0xe9]), br"\xe9");
assert_eq!(escape([0xea]), br"\xea");
assert_eq!(escape([0xeb]), br"\xeb");
assert_eq!(escape([0xec]), br"\xec");
assert_eq!(escape([0xed]), br"\xed");
assert_eq!(escape([0xee]), br"\xee");
assert_eq!(escape([0xef]), br"\xef");
assert_eq!(escape([0xf0]), br"\xf0");
assert_eq!(escape([0xf1]), br"\xf1");
assert_eq!(escape([0xf2]), br"\xf2");
assert_eq!(escape([0xf3]), br"\xf3");
assert_eq!(escape([0xf4]), br"\xf4");
assert_eq!(escape([0xf5]), br"\xf5");
assert_eq!(escape([0xf6]), br"\xf6");
assert_eq!(escape([0xf7]), br"\xf7");
assert_eq!(escape([0xf8]), br"\xf8");
assert_eq!(escape([0xf9]), br"\xf9");
assert_eq!(escape([0xfa]), br"\xfa");
assert_eq!(escape([0xfb]), br"\xfb");
assert_eq!(escape([0xfc]), br"\xfc");
assert_eq!(escape([0xfd]), br"\xfd");
assert_eq!(escape([0xfe]), br"\xfe");
assert_eq!(escape([0xff]), br"\xff");
}
#[cfg(feature = "alloc")]
#[test]
fn test_escape() {
assert_eq!(escape(b""), br"");
assert_eq!(escape(b"hello world"), br"hello world");
assert_eq!(escape(b"hello\x1eworld"), br"hello\x1eworld");
}
#[test]
#[rustfmt::skip]
fn test_escape_into() {
let mut buf = [0u8; 128];
assert_eq!(escape_into(&mut buf, b""), Ok(0));
assert_eq!(buf, [0u8; 128]);
let mut buf = [0u8; 128];
assert_eq!(escape_into(&mut buf, b"hello world"), Ok(11));
assert_eq!(buf.as_slice(), [br"hello world".as_slice(), &[0u8; 117]].concat());
let mut buf = [0u8; 128];
assert_eq!(escape_into(&mut buf, b"hello\x1eworld"), Ok(14));
assert_eq!(buf.as_slice(), [br"hello\x1eworld".as_slice(), &[0u8; 114]].concat());
let mut buf = [0u8; 128];
assert_eq!(escape_into(&mut buf, b"hello\x28world"), Ok(11));
assert_eq!(buf.as_slice(), [br"hello(world".as_slice(), &[0u8; 117]].concat());
}
#[test]
#[rustfmt::skip]
fn test_escape_into_error() {
let mut buf = [0u8; 10];
assert_eq!(escape_into(&mut buf, b"hello\x28world"), Err(EscapeIntoError::OutOfBounds));
assert_eq!(buf.as_slice(), br"hello(worl".as_slice());
}
#[test]
fn test_escaped_max_len() {
assert_eq!(escaped_max_len(0), Some(0));
assert_eq!(escaped_max_len(10), Some(40));
}
#[test]
fn test_escaped_len() {
assert_eq!(escaped_len(b"hello world"), 11);
assert_eq!(escaped_len(b"hello\\world"), 12);
assert_eq!(escaped_len(b"hello\x1eworld"), 14);
}