xs233_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[cfg(test)]
8mod tests {
9    use std::ffi::c_void;
10
11    use super::*;
12
13    const scalar_b: [u8; 16] = [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128];
14    const scalar_a: [u8; 16] = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128];
15
16    #[test]
17    fn xsb233_add_looks_reasonable() {
18        unsafe {
19            let mut point_a: xsb233_point = xsb233_neutral.clone();
20            let mut point_b: xsb233_point = xsb233_neutral.clone();
21            let mut point_ab: xsb233_point = xsb233_neutral.clone();
22            let mut point_ba: xsb233_point = xsb233_neutral.clone();
23
24            xsb233_mulgen(&mut point_a, scalar_a.as_ptr() as *const c_void, 16);
25            xsb233_mulgen(&mut point_b, scalar_b.as_ptr() as *const c_void, 16);
26
27            xsb233_add(&mut point_ab, &point_a, &point_b);
28            xsb233_add(&mut point_ba, &point_b, &point_a);
29
30            assert_eq!(xsb233_equals(&point_a, &point_b), 0);
31            assert_eq!(xsb233_equals(&point_a, &point_ba), 0);
32            assert_eq!(xsb233_equals(&point_b, &point_ba), 0);
33            assert_eq!(xsb233_equals(&point_a, &point_ab), 0);
34            assert_eq!(xsb233_equals(&point_b, &point_ab), 0);
35            assert_eq!(xsb233_equals(&point_ab, &point_ba), 0xFFFFFFFF);
36        }
37    }
38
39    #[test]
40    fn xsk233_add_looks_reasonable() {
41        unsafe {
42            let mut point_a: xsk233_point = xsk233_neutral.clone();
43            let mut point_b: xsk233_point = xsk233_neutral.clone();
44            let mut point_ab: xsk233_point = xsk233_neutral.clone();
45            let mut point_ba: xsk233_point = xsk233_neutral.clone();
46
47            xsk233_mulgen(&mut point_a, scalar_a.as_ptr() as *const c_void, 16);
48            xsk233_mulgen(&mut point_b, scalar_b.as_ptr() as *const c_void, 16);
49
50            xsk233_add(&mut point_ab, &point_a, &point_b);
51            xsk233_add(&mut point_ba, &point_b, &point_a);
52
53            assert_eq!(xsk233_equals(&point_a, &point_b), 0);
54            assert_eq!(xsk233_equals(&point_a, &point_ba), 0);
55            assert_eq!(xsk233_equals(&point_b, &point_ba), 0);
56            assert_eq!(xsk233_equals(&point_a, &point_ab), 0);
57            assert_eq!(xsk233_equals(&point_b, &point_ab), 0);
58            assert_eq!(xsk233_equals(&point_ab, &point_ba), 0xFFFFFFFF);
59        }
60    }
61}