|
1 |
| -import { encodeRLE } from '../rle' |
| 1 | +import { decodeRLE, encodeRLE } from '../rle' |
2 | 2 |
|
3 | 3 | describe('encodeRLE', () => {
|
4 | 4 | test('no repetitions', () => {
|
@@ -134,3 +134,138 @@ abababababababab`
|
134 | 134 | expect(encoded.toString('hex')).toEqual(expectation)
|
135 | 135 | })
|
136 | 136 | })
|
| 137 | + |
| 138 | +describe('decodeRLE', () => { |
| 139 | + test('no repetitions', () => { |
| 140 | + const source = `abababababababab\ |
| 141 | +cdcdcdcdcdcdcdcd\ |
| 142 | +abababababababab\ |
| 143 | +cdcdcdcdcdcdcdcd` |
| 144 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), source.length / 2) |
| 145 | + expect(decoded.toString('hex')).toEqual(source) |
| 146 | + }) |
| 147 | + |
| 148 | + test('two repetitions', () => { |
| 149 | + const source = `abababababababab\ |
| 150 | +abababababababab\ |
| 151 | +cdcdcdcdcdcdcdcd\ |
| 152 | +0000000000000000\ |
| 153 | +1111111111111111` |
| 154 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), source.length / 2) |
| 155 | + expect(decoded.toString('hex')).toEqual(source) |
| 156 | + }) |
| 157 | + |
| 158 | + test('three repetitions', () => { |
| 159 | + const source = `abababababababab\ |
| 160 | +abababababababab\ |
| 161 | +abababababababab\ |
| 162 | +cdcdcdcdcdcdcdcd\ |
| 163 | +0000000000000000\ |
| 164 | +1111111111111111` |
| 165 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), source.length / 2) |
| 166 | + expect(decoded.toString('hex')).toEqual(source) |
| 167 | + }) |
| 168 | + |
| 169 | + test('four repetitions', () => { |
| 170 | + const source = `fefefefefefefefe\ |
| 171 | +0000000000000004\ |
| 172 | +abababababababab\ |
| 173 | +cdcdcdcdcdcdcdcd\ |
| 174 | +0000000000000000\ |
| 175 | +1111111111111111` |
| 176 | + const expectation = `abababababababab\ |
| 177 | +abababababababab\ |
| 178 | +abababababababab\ |
| 179 | +abababababababab\ |
| 180 | +cdcdcdcdcdcdcdcd\ |
| 181 | +0000000000000000\ |
| 182 | +1111111111111111` |
| 183 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 184 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 185 | + }) |
| 186 | + |
| 187 | + test('five repetitions at the beginning', () => { |
| 188 | + const source = `fefefefefefefefe\ |
| 189 | +0000000000000005\ |
| 190 | +abababababababab\ |
| 191 | +cdcdcdcdcdcdcdcd\ |
| 192 | +0000000000000000\ |
| 193 | +1111111111111111` |
| 194 | + const expectation = `abababababababab\ |
| 195 | +abababababababab\ |
| 196 | +abababababababab\ |
| 197 | +abababababababab\ |
| 198 | +abababababababab\ |
| 199 | +cdcdcdcdcdcdcdcd\ |
| 200 | +0000000000000000\ |
| 201 | +1111111111111111` |
| 202 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 203 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 204 | + }) |
| 205 | + |
| 206 | + test('five repetitions in the midddle', () => { |
| 207 | + const source = `2323232323232323\ |
| 208 | +fefefefefefefefe\ |
| 209 | +0000000000000005\ |
| 210 | +abababababababab\ |
| 211 | +cdcdcdcdcdcdcdcd\ |
| 212 | +0000000000000000\ |
| 213 | +1111111111111111` |
| 214 | + const expectation = `2323232323232323\ |
| 215 | +abababababababab\ |
| 216 | +abababababababab\ |
| 217 | +abababababababab\ |
| 218 | +abababababababab\ |
| 219 | +abababababababab\ |
| 220 | +cdcdcdcdcdcdcdcd\ |
| 221 | +0000000000000000\ |
| 222 | +1111111111111111` |
| 223 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 224 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 225 | + }) |
| 226 | + |
| 227 | + test('five repetitions in the midddle #2', () => { |
| 228 | + const source = `2323232323232323\ |
| 229 | +fefefefefefefefe\ |
| 230 | +0000000000000005\ |
| 231 | +abababababababab\ |
| 232 | +cdcdcdcdcdcdcdcd` |
| 233 | + const expectation = `2323232323232323\ |
| 234 | +abababababababab\ |
| 235 | +abababababababab\ |
| 236 | +abababababababab\ |
| 237 | +abababababababab\ |
| 238 | +abababababababab\ |
| 239 | +cdcdcdcdcdcdcdcd` |
| 240 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 241 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 242 | + }) |
| 243 | + |
| 244 | + test('five repetitions at the end', () => { |
| 245 | + const source = `2323232323232323\ |
| 246 | +fefefefefefefefe\ |
| 247 | +0000000000000005\ |
| 248 | +abababababababab` |
| 249 | + const expectation = `2323232323232323\ |
| 250 | +abababababababab\ |
| 251 | +abababababababab\ |
| 252 | +abababababababab\ |
| 253 | +abababababababab\ |
| 254 | +abababababababab` |
| 255 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 256 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 257 | + }) |
| 258 | + |
| 259 | + test('only five repetitions', () => { |
| 260 | + const source = `fefefefefefefefe\ |
| 261 | +0000000000000005\ |
| 262 | +abababababababab` |
| 263 | + const expectation = `abababababababab\ |
| 264 | +abababababababab\ |
| 265 | +abababababababab\ |
| 266 | +abababababababab\ |
| 267 | +abababababababab` |
| 268 | + const decoded = decodeRLE(Buffer.from(source, 'hex'), expectation.length / 2) |
| 269 | + expect(decoded.toString('hex')).toEqual(expectation) |
| 270 | + }) |
| 271 | +}) |
0 commit comments