1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 use script::test::{ByteString, normalize_value};
6
7 #[test]
test_normalize_empty_bytestring()8 fn test_normalize_empty_bytestring() {
9 // empty ByteString test
10 let empty_bytestring = ByteString::new(vec![]);
11 let actual = normalize_value(empty_bytestring);
12 let expected = ByteString::new(vec![]);
13 assert_eq!(actual, expected);
14 }
15
16 #[test]
test_normalize_all_whitespace_bytestring()17 fn test_normalize_all_whitespace_bytestring() {
18 // All whitespace test. A horizontal tab, a line feed, a carriage return , and a space
19 let all_whitespace_bytestring = ByteString::new(vec![b'\t', b'\n', b'\r', b' ']);
20 let actual = normalize_value(all_whitespace_bytestring);
21 let expected = ByteString::new(vec![]);
22 assert_eq!(actual, expected);
23 }
24
25 #[test]
test_normalize_non_empty_no_whitespace_bytestring()26 fn test_normalize_non_empty_no_whitespace_bytestring() {
27 // Non-empty, no whitespace ByteString test
28 let no_whitespace_bytestring = ByteString::new(vec![b'S', b'!']);
29 let actual = normalize_value(no_whitespace_bytestring);
30 let expected = ByteString::new(vec![b'S', b'!']);
31 assert_eq!(actual, expected);
32 }
33
34 #[test]
test_normalize_non_empty_leading_whitespace_bytestring()35 fn test_normalize_non_empty_leading_whitespace_bytestring() {
36 // Non-empty, leading whitespace, no trailing whitespace ByteString test
37 let leading_whitespace_bytestring = ByteString::new(vec![b'\t', b'\n', b' ', b'\r', b'S', b'!']);
38 let actual = normalize_value(leading_whitespace_bytestring);
39 let expected = ByteString::new(vec![b'S', b'!']);
40 assert_eq!(actual, expected);
41 }
42
43 #[test]
test_normalize_non_empty_no_leading_whitespace_trailing_whitespace_bytestring()44 fn test_normalize_non_empty_no_leading_whitespace_trailing_whitespace_bytestring() {
45 // Non-empty, no leading whitespace, but with trailing whitespace ByteString test
46 let trailing_whitespace_bytestring = ByteString::new(vec![b'S', b'!', b'\t', b'\n', b' ', b'\r']);
47 let actual = normalize_value(trailing_whitespace_bytestring);
48 let expected = ByteString::new(vec![b'S', b'!']);
49 assert_eq!(actual, expected);
50 }
51
52 #[test]
test_normalize_non_empty_leading_and_trailing_whitespace_bytestring()53 fn test_normalize_non_empty_leading_and_trailing_whitespace_bytestring() {
54 // Non-empty, leading whitespace, and trailing whitespace ByteString test
55 let whitespace_sandwich_bytestring =
56 ByteString::new(vec![b'\t', b'\n', b' ', b'\r', b'S', b'!', b'\t', b'\n', b' ', b'\r']);
57 let actual = normalize_value(whitespace_sandwich_bytestring);
58 let expected = ByteString::new(vec![b'S', b'!']);
59 assert_eq!(actual, expected);
60 }
61
62 #[test]
test_normalize_non_empty_leading_trailing_and_internal_whitespace_bytestring()63 fn test_normalize_non_empty_leading_trailing_and_internal_whitespace_bytestring() {
64 // Non-empty, leading whitespace, trailing whitespace,
65 // and internal whitespace ByteString test
66 let whitespace_bigmac_bytestring =
67 ByteString::new(vec![b'\t', b'\n', b' ', b'\r', b'S',
68 b'\t', b'\n', b' ', b'\r', b'!',
69 b'\t', b'\n', b' ', b'\r']);
70 let actual = normalize_value(whitespace_bigmac_bytestring);
71 let expected = ByteString::new(vec![b'S', b'\t', b'\n', b' ', b'\r', b'!']);
72 assert_eq!(actual, expected);
73 }
74