amaru_kernel/cardano/anchor.rs
1// Copyright 2025 PRAGMA
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15pub use pallas_primitives::conway::Anchor;
16#[cfg(any(test, feature = "test-utils"))]
17pub use tests::*;
18
19#[cfg(any(test, feature = "test-utils"))]
20mod tests {
21 use proptest::{prelude::*, prop_compose, string};
22
23 use super::Anchor;
24 use crate::Hash;
25
26 prop_compose! {
27 pub fn any_anchor()(
28 url in {
29 #[expect(clippy::unwrap_used)]
30 string::string_regex(
31 r"(https:)?[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?"
32 ).unwrap()
33 },
34 content_hash in any::<[u8; 32]>(),
35 ) -> Anchor {
36 Anchor {
37 url,
38 content_hash: Hash::from(content_hash),
39 }
40 }
41 }
42}