aboutsummaryrefslogtreecommitdiff
path: root/packet_reader/rle.ha
diff options
context:
space:
mode:
authorubq323 <ubq323@ubq323.website>2024-04-22 01:21:38 +0100
committerubq323 <ubq323@ubq323.website>2024-04-22 01:21:38 +0100
commit4c7156d0b20447e29f354679acdcd28480df91bc (patch)
treefdcaca21c06781a8732e50c6081cbc8ea30c3fc8 /packet_reader/rle.ha
parent11c8b134d7de3d7b2249d74b26a87bc9d6acc27d (diff)
rlerle
Diffstat (limited to 'packet_reader/rle.ha')
-rw-r--r--packet_reader/rle.ha19
1 files changed, 16 insertions, 3 deletions
diff --git a/packet_reader/rle.ha b/packet_reader/rle.ha
index af9f080..36e0b29 100644
--- a/packet_reader/rle.ha
+++ b/packet_reader/rle.ha
@@ -16,11 +16,11 @@ export fn rle_encode(d: []u32) []u32 = {
for (ix < len(d) && d[ix] == this) ix += 1;
const val = this;
let count = (ix - start): int;
- fmt::printfln("#{:_06x} x{}",val, count)!;
- for (count > 0) {
- append(out, item_encode(count%256, val));
+ for (count > 256) {
+ append(out, item_encode(256, val));
count -= 256;
};
+ append(out, item_encode(count, val));
start = ix;
};
return out;
@@ -63,3 +63,16 @@ fn dotest(eu: []u32) void = {
@test fn oeuoeu2() void = dotest([1,1,1]);
@test fn oeuoeu2() void = dotest([1,6]);
@test fn oeuoeu2() void = dotest([1]);
+
+fn testm(n: size) void = {
+ let e: []u32 = [];
+ append(e, [17...], n);
+ defer free(e);
+ dotest(e);
+};
+
+@test fn t254() void = testm(254);
+@test fn t255() void = testm(255);
+@test fn t256() void = testm(256);
+@test fn t257() void = testm(257);
+@test fn t258() void = testm(258);