cpclib_common/
lib.rs

1#![feature(slice_take)]
2
3pub mod chars;
4pub mod clap_extra;
5pub mod event;
6pub mod parse;
7pub mod riff;
8
9#[cfg(feature = "cmdline")]
10pub use ::clap;
11pub use clap_extra::*;
12pub use parse::*;
13#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
14pub use rayon;
15#[cfg(feature = "cmdline")]
16pub use semver;
17#[cfg(feature = "cmdline")]
18pub use time;
19pub use {
20    bitfield, bitflags, bitvec, camino, itertools, num, resolve_path, smallvec, smol_str, strsim,
21    winnow
22};
23
24#[cfg(test)]
25mod tests {
26    use winnow::error::ContextError;
27    use winnow::stream::AsBStr;
28    use winnow::{BStr, Parser};
29
30    use super::*;
31
32    #[test]
33    fn test_parse_value() {
34        let mut fortytwo = "42".as_bstr();
35        assert_eq!(
36            dbg!(parse_value::<_, ContextError>.parse_next(&mut fortytwo)).unwrap(),
37            42
38        );
39        assert_eq!(
40            parse_value::<_, ContextError>
41                .parse(BStr::new(b"0x12"))
42                .unwrap(),
43            0x12
44        );
45        assert_eq!(
46            parse_value::<_, ContextError>
47                .parse(BStr::new(b"0x0000"))
48                .unwrap(),
49            0x0000
50        );
51        assert_eq!(
52            parse_value::<_, ContextError>
53                .parse(BStr::new(b"0x4000"))
54                .unwrap(),
55            0x4000
56        );
57        assert_eq!(
58            parse_value::<_, ContextError>
59                .parse(BStr::new(b"0x8000"))
60                .unwrap(),
61            0x8000
62        );
63        assert_eq!(
64            parse_value::<_, ContextError>
65                .parse(BStr::new(b"0xc000"))
66                .unwrap(),
67            0xC000
68        );
69        assert_eq!(
70            parse_value::<_, ContextError>
71                .parse(BStr::new(b"0x1_2"))
72                .unwrap(),
73            0x12
74        );
75        assert_eq!(
76            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"0b0100101"))).unwrap(),
77            0b0100101
78        );
79        assert_eq!(
80            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"0b0_100_101"))).unwrap(),
81            0b0100101
82        );
83        assert_eq!(
84            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"%0100101"))).unwrap(),
85            0b0100101
86        );
87        assert_eq!(
88            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"0100101b"))).unwrap(),
89            0b0100101
90        );
91        assert_eq!(
92            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"160"))).unwrap(),
93            160
94        );
95        assert_eq!(
96            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"1_60"))).unwrap(),
97            160
98        );
99        assert_eq!(
100            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"0b0h"))).unwrap(),
101            0x0B0
102        );
103        assert_eq!(
104            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"0bh"))).unwrap(),
105            0xB
106        );
107
108        assert_eq!(
109            dbg!(parse_value::<_, ContextError>.parse(BStr::new(b"CH"))).unwrap(),
110            0xC
111        );
112
113        assert!(dbg!(parse_value::<_, ContextError>.parse_next(&mut BStr::new(b"CHECK"))).is_err());
114    }
115}