ranges_ext/
test_helper.rs1use crate::RangeOp;
2use core::ops::Range;
3
4#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct TestRange {
7 pub start: u64,
8 pub end: u64,
9 pub kind: RangeKind,
10 pub overwritable: bool,
11}
12
13impl Default for TestRange {
14 fn default() -> Self {
15 Self {
16 start: 0,
17 end: 0,
18 kind: RangeKind::default(),
19 overwritable: true,
20 }
21 }
22}
23
24#[derive(Debug, Clone, PartialEq, Eq, Default)]
25pub enum RangeKind {
26 #[default]
27 TypeA,
28 TypeB,
29 TypeC,
30}
31
32impl TestRange {
33 pub fn new(start: u64, end: u64, kind: RangeKind) -> Self {
34 Self {
35 start,
36 end,
37 kind,
38 overwritable: true,
39 }
40 }
41
42 pub fn new_with_overwritable(
43 start: u64,
44 end: u64,
45 kind: RangeKind,
46 overwritable: bool,
47 ) -> Self {
48 Self {
49 start,
50 end,
51 kind,
52 overwritable,
53 }
54 }
55}
56
57impl RangeOp for TestRange {
58 type Kind = RangeKind;
59 type Type = u64;
60
61 fn range(&self) -> Range<Self::Type> {
62 self.start..self.end
63 }
64
65 fn kind(&self) -> Self::Kind {
66 self.kind.clone()
67 }
68
69 fn overwritable(&self, _other: &Self) -> bool {
70 self.overwritable
71 }
72
73 fn clone_with_range(&self, range: Range<Self::Type>) -> Self {
74 Self {
75 start: range.start,
76 end: range.end,
77 kind: self.kind.clone(),
78 overwritable: self.overwritable,
79 }
80 }
81}