p2panda_auth/test_utils/
no_ord.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! Test utilities for when no ordering strategy is required (most likely
4//! because operations are known to prepared be processed in partial order
5//! already).
6
7use std::convert::Infallible;
8use std::fmt::Debug;
9
10use crate::group::GroupControlMessage;
11use crate::group::{GroupCrdt, GroupCrdtError, GroupCrdtState};
12use crate::test_utils::{Conditions, MemberId, MessageId, TestOperation, TestResolver};
13use crate::traits::Orderer;
14
15#[derive(Clone, Debug)]
16pub struct TestOrderer {}
17impl Orderer<MemberId, MessageId, GroupControlMessage<MemberId, Conditions>> for TestOrderer {
18    type State = TestOrdererState;
19
20    type Operation = TestOperation;
21
22    type Error = Infallible;
23
24    fn next_message(
25        _y: Self::State,
26        _payload: &GroupControlMessage<MemberId, Conditions>,
27    ) -> Result<(Self::State, Self::Operation), Self::Error> {
28        unimplemented!()
29    }
30
31    fn queue(_y: Self::State, _message: &Self::Operation) -> Result<Self::State, Self::Error> {
32        unimplemented!()
33    }
34
35    fn next_ready_message(
36        _y: Self::State,
37    ) -> Result<(Self::State, Option<Self::Operation>), Self::Error> {
38        unimplemented!()
39    }
40}
41
42pub type TestOrdererState = ();
43pub type TestGroupState = GroupCrdtState<MemberId, MessageId, Conditions, TestOrderer>;
44pub type TestGroup = GroupCrdt<MemberId, MessageId, Conditions, TestResolver, TestOrderer>;
45pub type TestGroupError =
46    GroupCrdtError<MemberId, MessageId, Conditions, TestResolver, TestOrderer>;