microsoft/qdk
Publicmirrored from https://github.com/microsoft/qdkAvailable
source/paulimer/src/quantum_core/tests.rs
42lines · modecode
| 1 | // Copyright (c) Microsoft Corporation. |
| 2 | // Licensed under the MIT License. |
| 3 | |
| 4 | use super::{id, x, y, z, All, Axis, DirectedAxis, PauliMatrix, PauliObservable}; |
| 5 | |
| 6 | #[test] |
| 7 | fn neg_neg_is_identity() { |
| 8 | for a in PauliObservable::all() { |
| 9 | assert_eq!(a, -(-a)); |
| 10 | } |
| 11 | assert_eq!(x(0), -(-x(0))); |
| 12 | assert_eq!(y(0), -(-y(0))); |
| 13 | assert_eq!(z(0), -(-z(0))); |
| 14 | assert_eq!(id(0), -(-id(0))); |
| 15 | } |
| 16 | |
| 17 | #[test] |
| 18 | fn qubit_then_pauli_order() { |
| 19 | assert!(x(1) < x(2)); |
| 20 | assert!(x(1) < y(1)); |
| 21 | assert!(y(1) < x(2)); |
| 22 | } |
| 23 | |
| 24 | #[test] |
| 25 | fn axis_xor() { |
| 26 | let result = (Axis::X as isize) ^ (Axis::Z as isize); |
| 27 | assert_eq!(result, Axis::Y as isize); |
| 28 | } |
| 29 | |
| 30 | #[test] |
| 31 | fn pauli_matrix_from_axis() { |
| 32 | assert_eq!(PauliMatrix::X as isize, Axis::X as isize); |
| 33 | assert_eq!(PauliMatrix::Y as isize, Axis::Y as isize); |
| 34 | assert_eq!(PauliMatrix::Z as isize, Axis::Z as isize); |
| 35 | } |
| 36 | |
| 37 | #[test] |
| 38 | fn directed_axis_from_axis() { |
| 39 | assert_eq!(DirectedAxis::PlusX as isize, Axis::X as isize); |
| 40 | assert_eq!(DirectedAxis::PlusY as isize, Axis::Y as isize); |
| 41 | assert_eq!(DirectedAxis::PlusZ as isize, Axis::Z as isize); |
| 42 | } |
| 43 | |