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