astroport_circular_buffer/
error.rs

1use cosmwasm_std::StdError;
2use thiserror::Error;
3
4pub type BufferResult<R> = Result<R, BufferError>;
5
6/// This enum describes pair contract errors
7#[derive(Error, Debug, PartialEq)]
8pub enum BufferError {
9    #[error("{0}")]
10    Std(#[from] StdError),
11
12    #[error("Can't reduce capacity because buffer contains key(s) greater than new head")]
13    ReduceCapacityError {},
14
15    #[error("Can't save value at index {0} which greater than capacity")]
16    SaveValueError(u32),
17
18    #[error("Can't read value at index {0} which greater than capacity")]
19    ReadAheadError(u32),
20
21    #[error("Index {0} not found")]
22    IndexNotFound(u32),
23
24    #[error("Buffer not initialized")]
25    BufferNotInitialized {},
26
27    #[error("Buffer already initialized")]
28    BufferAlreadyInitialized {},
29}
30
31impl From<BufferError> for StdError {
32    fn from(value: BufferError) -> Self {
33        match value {
34            BufferError::Std(err) => err,
35            _ => StdError::generic_err(value.to_string()),
36        }
37    }
38}
39
40#[cfg(test)]
41mod testing {
42    use super::*;
43
44    #[test]
45    fn test_buffer_error() {
46        let err = BufferError::Std(StdError::generic_err("test"));
47        let std_err: StdError = err.into();
48        assert_eq!(std_err, StdError::generic_err("test"));
49
50        let custom_err = BufferError::ReduceCapacityError {};
51        let std_err: StdError = custom_err.into();
52        assert_eq!(
53            std_err,
54            StdError::generic_err(
55                "Can't reduce capacity because buffer contains key(s) greater than new head"
56            )
57        );
58    }
59}