source: tests/src/test-fmat.c @ cd46892

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/timestretchfix/ffmpeg5
Last change on this file since cd46892 was fce8496, checked in by Paul Brossier <piem@piem.org>, 6 years ago

[tests] improve test-fmat

  • Property mode set to 100644
File size: 2.1 KB
Line 
1#include "aubio.h"
2#include "utils_tests.h"
3
4// create a new matrix and fill it with i * 1. + j * .1, where i is the row,
5// and j the column.
6
7void assert_fmat_all_equal(fmat_t *mat, smpl_t scalar)
8{
9  uint_t i, j;
10  for ( i = 0; i < mat->height; i++ ) {
11    for ( j = 0; j < mat->length; j++ ) {
12      assert(mat->data[i][j] == scalar);
13    }
14  }
15}
16
17int main (void)
18{
19  uint_t i, j;
20  uint_t height = 3, length = 9;
21
22  // create fmat_t object
23  fmat_t * mat = new_fmat(height, length);
24  fmat_t * other_mat = new_fmat(height, length);
25
26  assert(mat);
27  assert(other_mat);
28
29  assert(mat->length == length);
30  assert(mat->height == height);
31
32  for (i = 0; i < mat->height; i++) {
33    for (j = 0; j < mat->length; j++) {
34      // all elements are already initialized to 0.
35      assert(mat->data[i][j] == 0);
36      // setting element of row i, column j
37      mat->data[i][j] = i * 10. + j;
38    }
39  }
40
41  // print out matrix
42  fmat_print(mat);
43
44  // helpers
45  fmat_rev(mat);
46  fmat_print(mat);
47  for (i = 0; i < mat->height; i++) {
48    for (j = 0; j < mat->length; j++) {
49      assert(mat->data[i][j] == i * 10. + mat->length - 1. - j);
50    }
51  }
52
53  fmat_set_sample(mat, 3, 1, 1);
54  assert(fmat_get_sample(mat, 1, 1) == 3.);
55
56  fmat_ones(mat);
57  assert_fmat_all_equal(mat, 1.);
58
59  fmat_set(other_mat, .5);
60  assert_fmat_all_equal(other_mat, .5);
61
62  fmat_weight(mat, other_mat);
63  assert_fmat_all_equal(mat, .5);
64
65  fvec_t channel_onstack;
66  fvec_t *channel = &channel_onstack;
67  fmat_get_channel(mat, 1, channel);
68  assert(channel->data == mat->data[1]);
69
70  // copy of the same size
71  fmat_copy(mat, other_mat);
72  del_fmat(other_mat);
73
74  // copy to undersized
75  other_mat = new_fmat(height - 1, length);
76  fmat_copy(mat, other_mat);
77  del_fmat(other_mat);
78
79  // copy from undersized
80  other_mat = new_fmat(height, length + 1);
81  fmat_copy(mat, other_mat);
82
83  // wrong parameters
84  assert(new_fmat(-1, length) == NULL);
85  assert(new_fmat(height, -1) == NULL);
86
87  // methods for wrappers with opaque structure
88  assert (fmat_get_channel_data(mat, 0) == mat->data[0]);
89  assert (fmat_get_data(mat) == mat->data);
90
91  if (mat)
92    del_fmat(mat);
93  if (other_mat)
94    del_fmat(other_mat);
95  return 0;
96}
Note: See TracBrowser for help on using the repository browser.