Skip to content

Commit 3a53d30

Browse files
Refactor buffer serializer
1 parent a171ce7 commit 3a53d30

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/client/terrain/util/buffer_serializer.rs

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use renet::Bytes;
22

3+
#[derive(Debug, PartialEq)]
34
pub struct RLEToken {
45
symbol: i32,
56
count: i32,
@@ -47,6 +48,18 @@ fn tokenize_buffer(array: Vec<i32>) -> Vec<RLEToken> {
4748
vec
4849
}
4950

51+
fn revert_buffer_tokenization(tokens: Vec<RLEToken>) -> Vec<i32> {
52+
let mut vec = Vec::<i32>::new();
53+
54+
tokens.iter().for_each(|token| {
55+
for _ in 0..token.count {
56+
vec.push(token.symbol);
57+
}
58+
});
59+
60+
vec
61+
}
62+
5063
#[cfg(test)]
5164
pub mod tests {
5265
use super::*;
@@ -56,12 +69,26 @@ pub mod tests {
5669
let array = vec![1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3];
5770
let tokens = tokenize_buffer(array);
5871

59-
assert_eq!(tokens.len(), 3);
60-
assert_eq!(tokens[0].symbol, 1);
61-
assert_eq!(tokens[0].count, 4);
62-
assert_eq!(tokens[1].symbol, 2);
63-
assert_eq!(tokens[1].count, 3);
64-
assert_eq!(tokens[2].symbol, 3);
65-
assert_eq!(tokens[2].count, 5);
72+
let expected_tokens = vec![
73+
RLEToken { symbol: 1, count: 4 },
74+
RLEToken { symbol: 2, count: 3 },
75+
RLEToken { symbol: 3, count: 5 },
76+
];
77+
78+
assert_eq!(tokens, expected_tokens);
79+
}
80+
81+
#[test]
82+
fn test_revert_buffer_tokenization() {
83+
let tokens = vec![
84+
RLEToken { symbol: 1, count: 4 },
85+
RLEToken { symbol: 2, count: 3 },
86+
RLEToken { symbol: 3, count: 5 },
87+
];
88+
89+
let array = revert_buffer_tokenization(tokens);
90+
let expected_array = vec![1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3];
91+
92+
assert_eq!(array, expected_array);
6693
}
6794
}

0 commit comments

Comments
 (0)