+ assert(channel->data == mat->data[1]);
+
+ // copy of the same size
+ fmat_copy(mat, other_mat);
+ del_fmat(other_mat);
+
+ // copy to undersized
+ other_mat = new_fmat(height - 1, length);
+ fmat_copy(mat, other_mat);
+ del_fmat(other_mat);
+
+ // copy from undersized
+ other_mat = new_fmat(height, length + 1);
+ fmat_copy(mat, other_mat);
+
+ // wrong parameters
+ assert(new_fmat(-1, length) == NULL);
+ assert(new_fmat(height, -1) == NULL);
+
+ // methods for wrappers with opaque structure
+ assert (fmat_get_channel_data(mat, 0) == mat->data[0]);
+ assert (fmat_get_data(mat) == mat->data);
+
+ if (mat)
+ del_fmat(mat);
+ if (other_mat)
+ del_fmat(other_mat);