dbc_rs/bit_timing/builder/
build.rs1use super::BitTimingBuilder;
2use crate::{BitTiming, Result};
3
4impl BitTimingBuilder {
5 pub fn build(self) -> Result<BitTiming> {
29 match (self.baudrate, self.btr1, self.btr2) {
30 (Some(baudrate), Some(btr1), Some(btr2)) => {
31 Ok(BitTiming::with_btr(baudrate, btr1, btr2))
32 }
33 (Some(baudrate), _, _) => Ok(BitTiming::with_baudrate(baudrate)),
34 _ => Ok(BitTiming::new()),
35 }
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::BitTimingBuilder;
42
43 #[test]
44 fn test_build_empty() {
45 let bt = BitTimingBuilder::new().build().unwrap();
46 assert!(bt.is_empty());
47 }
48
49 #[test]
50 fn test_build_with_baudrate() {
51 let bt = BitTimingBuilder::new().baudrate(250000).build().unwrap();
52 assert_eq!(bt.baudrate(), Some(250000));
53 assert_eq!(bt.btr1(), None);
54 }
55
56 #[test]
57 fn test_build_with_all_values() {
58 let bt = BitTimingBuilder::new().baudrate(1000000).btr1(5).btr2(10).build().unwrap();
59 assert_eq!(bt.baudrate(), Some(1000000));
60 assert_eq!(bt.btr1(), Some(5));
61 assert_eq!(bt.btr2(), Some(10));
62 }
63
64 #[test]
65 fn test_build_btr_without_baudrate_ignored() {
66 let bt = BitTimingBuilder::new().btr1(1).btr2(2).build().unwrap();
68 assert!(bt.is_empty());
69 }
70
71 #[test]
72 fn test_build_partial_btr() {
73 let bt = BitTimingBuilder::new().baudrate(500000).btr1(1).build().unwrap();
75 assert_eq!(bt.baudrate(), Some(500000));
76 assert_eq!(bt.btr1(), None);
78 }
79}