-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestDecoder.cpp
More file actions
117 lines (82 loc) · 2.17 KB
/
testDecoder.cpp
File metadata and controls
117 lines (82 loc) · 2.17 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "catch.hpp"
#include "huffmanTree.h"
#include "encoder.h"
#include "decoder.h"
#include <bits/stdc++.h>
using namespace std;
TEST_CASE("Test creating an instance of decoder")
{
Decoder decode;
}
TEST_CASE("Test reading histogram")
{
Decoder decode;
ifstream fin;
fin.open("out.txt");
decode.readHistogram(fin);
}
TEST_CASE("Create huffman tree using histogram")
{
Decoder decode;
ifstream fin;
fin.open("out.txt");
decode.readHistogram(fin);
unordered_map<char,int> histogram = decode.getHistogram();
huffmanTree hTree(histogram);
}
TEST_CASE("Generate huffman codes for decoder")
{
Decoder decode;
ifstream fin;
fin.open("out.txt");
decode.readHistogram(fin);
unordered_map<char,int> histogram = decode.getHistogram();
huffmanTree htree(histogram);
htree.buildHuffmanTree();
huffmanNode *root = htree.getRoot();
htree.generateCodes(root,"");
unordered_map<char,string> huffmanCodes = htree.getHuffmanCodes();
unordered_map<char,string> compare;
compare[-1] = "1010";
compare[10] = "1100";
compare[' '] = "001";
compare['e'] = "1001";
compare['g'] = "111";
compare['h'] = "1011";
compare['o'] = "01";
compare['p'] = "000";
compare['r'] = "1000";
compare['s'] = "1101";
REQUIRE(compare == huffmanCodes);
}
TEST_CASE("Get codes from huffman tree")
{
Decoder decode;
ifstream fin;
fin.open("out.txt");
decode.readHistogram(fin);
unordered_map<char,int> histogram = decode.getHistogram();
huffmanTree htree(histogram);
htree.buildHuffmanTree();
huffmanNode *root = htree.getRoot();
htree.generateCodes(root,"");
unordered_map<char,string> huffmanCodes = htree.getHuffmanCodes();
decode.setCodes(huffmanCodes);
}
TEST_CASE("Generate decoded file")
{
Decoder decode;
ifstream fin;
fin.open("out3.txt");
decode.readHistogram(fin);
unordered_map<char,int> histogram = decode.getHistogram();
huffmanTree htree(histogram);
htree.buildHuffmanTree();
huffmanNode *root = htree.getRoot();
htree.generateCodes(root,"");
unordered_map<char,string> huffmanCodes = htree.getHuffmanCodes();
decode.setCodes(huffmanCodes);
ofstream fout;
fout.open("decoded.txt");
decode.generateDecodedFile(fin,fout);
}