aboutsummaryrefslogtreecommitdiff
path: root/tests/tlzsschain.nim
diff options
context:
space:
mode:
authorpacien2018-11-30 18:44:20 +0100
committerpacien2018-11-30 18:44:20 +0100
commit5bbe75659aef55542268cbf35c66342cb22ce865 (patch)
tree53c1e79c4195be546ba5762d61eb995a4f9e0530 /tests/tlzsschain.nim
parente88f60b63cb05f56a61060a953c726b7a78c0652 (diff)
downloadgziplike-5bbe75659aef55542268cbf35c66342cb22ce865.tar.gz
isolate lzss chain module
Diffstat (limited to 'tests/tlzsschain.nim')
-rw-r--r--tests/tlzsschain.nim42
1 files changed, 0 insertions, 42 deletions
diff --git a/tests/tlzsschain.nim b/tests/tlzsschain.nim
deleted file mode 100644
index a8c2012..0000000
--- a/tests/tlzsschain.nim
+++ /dev/null
@@ -1,42 +0,0 @@
1# gzip-like LZSS compressor
2# Copyright (C) 2018 Pacien TRAN-GIRARD
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as
6# published by the Free Software Foundation, either version 3 of the
7# License, or (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <https://www.gnu.org/licenses/>.
16
17import unittest, sequtils, tables
18import polyfill, lzssnode, lzsschain
19
20suite "lzsschain":
21 proc chain(): LzssChain =
22 let chainArray = [
23 lzssCharacter(0), lzssCharacter(1), lzssCharacter(2),
24 lzssCharacter(3), lzssCharacter(4), lzssCharacter(5),
25 lzssReference(4, 6), lzssCharacter(0), lzssCharacter(1),
26 lzssReference(3, 8), lzssCharacter(5),
27 lzssReference(3, 3), lzssCharacter(5)]
28 var chain = lzssChain()
29 for node in chainArray: chain.append(node)
30 result = chain
31
32 test "decode":
33 check chain().decode() == @[0'u8, 1, 2, 3, 4, 5, 0, 1, 2, 3, 0, 1, 4, 5, 0, 5, 5, 0, 5, 5]
34
35 test "stats":
36 let stats = chain().stats()
37 check stats.characters == newCountTable(concat(
38 repeat(0'u8, 2), repeat(1'u8, 2), repeat(2'u8, 1), repeat(3'u8, 1), repeat(4'u8, 1), repeat(5'u8, 3)))
39 check stats.lengths == newCountTable(concat(
40 repeat(3, 2), repeat(4, 1)))
41 check stats.positions == newCountTable(concat(
42 repeat(3, 1), repeat(6, 1), repeat(8, 1)))