1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use Range;
use crateSSTIndex;
// TODO handle this
// pub fn sst_index_test_persistant<T: SSTIndex>(mut index: impl SSTIndex) {
// let enteries: Vec<(Vec<u8>, u64)> = vec![
// ("001".as_bytes().into(), 100),
// ("007".as_bytes().into(), 150),
// ("090".as_bytes().into(), 220),
// ("140".as_bytes().into(), 280),
// ("200".as_bytes().into(), 360),
// ("210".as_bytes().into(), 400),
// ];
// for i in &enteries {
// index.add_entry(&i.0, i.1);
// }
// index.add_last_offset(500);
// let mut buf = Vec::new();
// index.serialize(&mut buf).unwrap();
// let mut cursor = Cursor::new(buf);
// let mut new_index = T::deserialize(&mut cursor).unwrap();
// assert_eq!(
// new_index.get_offset(b"001"),
// Some(Range {
// start: 100,
// end: 150
// })
// );
// assert_eq!(
// new_index.get_offset(b"140"),
// Some(Range {
// start: 280,
// end: 360
// })
// );
// assert_eq!(
// new_index.get_offset(b"210"),
// Some(Range {
// start: 400,
// end: 500
// })
// );
// assert_eq!(
// new_index.get_offset(b"240"),
// Some(Range {
// start: 400,
// end: 500
// })
// );
// assert_eq!(new_index.get_offset(b"0"), None);
// }