1// Copyright (c) 2018 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7generate_elem_id!(
8 /// Represents a global, memorable, friendly or informal name chosen by a user.
9 Nick,
10 "nick",
11 NICK
12);
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17 #[cfg(not(feature = "disable-validation"))]
18 use crate::util::error::Error;
19 use crate::Element;
20 use std::convert::TryFrom;
21
22 #[cfg(target_pointer_width = "32")]
23 #[test]
24 fn test_size() {
25 assert_size!(Nick, 12);
26 }
27
28 #[cfg(target_pointer_width = "64")]
29 #[test]
30 fn test_size() {
31 assert_size!(Nick, 24);
32 }
33
34 #[test]
35 fn test_simple() {
36 let elem: Element = "<nick xmlns='http://jabber.org/protocol/nick'>Link Mauve</nick>"
37 .parse()
38 .unwrap();
39 let nick = Nick::try_from(elem).unwrap();
40 assert_eq!(&nick.0, "Link Mauve");
41 }
42
43 #[test]
44 fn test_serialise() {
45 let elem1 = Element::from(Nick(String::from("Link Mauve")));
46 let elem2: Element = "<nick xmlns='http://jabber.org/protocol/nick'>Link Mauve</nick>"
47 .parse()
48 .unwrap();
49 assert_eq!(elem1, elem2);
50 }
51
52 #[cfg(not(feature = "disable-validation"))]
53 #[test]
54 fn test_invalid() {
55 let elem: Element = "<nick xmlns='http://jabber.org/protocol/nick'><coucou/></nick>"
56 .parse()
57 .unwrap();
58 let error = Nick::try_from(elem).unwrap_err();
59 let message = match error {
60 Error::ParseError(string) => string,
61 _ => panic!(),
62 };
63 assert_eq!(message, "Unknown child in nick element.");
64 }
65
66 #[cfg(not(feature = "disable-validation"))]
67 #[test]
68 fn test_invalid_attribute() {
69 let elem: Element = "<nick xmlns='http://jabber.org/protocol/nick' coucou=''/>"
70 .parse()
71 .unwrap();
72 let error = Nick::try_from(elem).unwrap_err();
73 let message = match error {
74 Error::ParseError(string) => string,
75 _ => panic!(),
76 };
77 assert_eq!(message, "Unknown attribute in nick element.");
78 }
79}