Imported Upstream version 3.2.2
[debian/gnuradio] / pmt / src / lib / unv_qa_template.cc.t
1 void
2 qa_pmt_unv::test_@TAG@vector()
3 {
4   static const size_t N = 3;
5   pmt_t v1 = pmt_make_@TAG@vector(N, 0);
6   CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
7   @TYPE@ s0 = @TYPE@(10);
8   @TYPE@ s1 = @TYPE@(20);
9   @TYPE@ s2 = @TYPE@(30);
10
11   pmt_@TAG@vector_set(v1, 0, s0);
12   pmt_@TAG@vector_set(v1, 1, s1);
13   pmt_@TAG@vector_set(v1, 2, s2);
14
15   CPPUNIT_ASSERT_EQUAL(s0, pmt_@TAG@vector_ref(v1, 0));
16   CPPUNIT_ASSERT_EQUAL(s1, pmt_@TAG@vector_ref(v1, 1));
17   CPPUNIT_ASSERT_EQUAL(s2, pmt_@TAG@vector_ref(v1, 2));
18
19   CPPUNIT_ASSERT_THROW(pmt_@TAG@vector_ref(v1, N), pmt_out_of_range);
20   CPPUNIT_ASSERT_THROW(pmt_@TAG@vector_set(v1, N, @TYPE@(0)), pmt_out_of_range);
21
22   size_t        len;
23   const @TYPE@ *rd = pmt_@TAG@vector_elements(v1, len);
24   CPPUNIT_ASSERT_EQUAL(len, N);
25   CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
26   CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
27   CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
28
29   @TYPE@ *wr = pmt_@TAG@vector_writable_elements(v1, len);
30   CPPUNIT_ASSERT_EQUAL(len, N);
31   wr[0] = @TYPE@(0);
32   CPPUNIT_ASSERT_EQUAL(@TYPE@(0), wr[0]);
33   CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
34   CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
35 }