blob: 4c0a22e530c7c239dc12c3dc9f63d5a0e36361ca [file] [log] [blame]
Jean-Marc Valin9caa3342008-02-20 15:00:26 +11001#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#include <stdio.h>
6#include <stdlib.h>
7#include "laplace.h"
8
Jean-Marc Valina82dfdd2008-03-13 23:01:55 +11009int main(void)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110010{
11 int i;
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110012 int ret = 0;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110013 ec_enc enc;
14 ec_dec dec;
15 ec_byte_buffer buf;
16 int val[10000], decay[10000];
17 ec_byte_writeinit(&buf);
18 ec_enc_init(&enc,&buf);
19
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110020 val[0] = 3; decay[0] = 6000;
21 val[1] = 0; decay[1] = 5800;
22 val[2] = -1; decay[2] = 5600;
Jean-Marc Valin7ff2cbc2008-03-02 21:25:22 +110023 for (i=3;i<10000;i++)
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110024 {
25 val[i] = rand()%15-7;
26 decay[i] = rand()%11000+5000;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110027 }
Jean-Marc Valin7cdc5a32008-03-01 20:56:17 +110028 for (i=0;i<10000;i++)
29 ec_laplace_encode(&enc, val[i], decay[i]);
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110030
31 ec_enc_done(&enc);
32
33 ec_byte_readinit(&buf,ec_byte_get_buffer(&buf),ec_byte_bytes(&buf));
34 ec_dec_init(&dec,&buf);
35
36 for (i=0;i<10000;i++)
37 {
38 int d = ec_laplace_decode(&dec, decay[i]);
39 if (d != val[i])
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110040 {
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110041 fprintf (stderr, "Got %d instead of %d\n", d, val[i]);
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110042 ret = 1;
43 }
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110044 }
45
46 ec_byte_writeclear(&buf);
Jean-Marc Valin3df6e272008-02-20 15:08:08 +110047 return ret;
Jean-Marc Valin9caa3342008-02-20 15:00:26 +110048}