X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=test%2Fdata%2Fsegment.cpp;h=c3c0d1b5f473b66c9a6503396e3984264d8130ec;hp=9a47249e4b5881a173cdf5c1d8a35f2b5963654b;hb=e97fc08de0df617b0b30d760a68c235f66cd59d2;hpb=eb8269e3b5eebdd77e6a82d42bcfdfbc3f7613a9 diff --git a/test/data/segment.cpp b/test/data/segment.cpp index 9a47249e..c3c0d1b5 100644 --- a/test/data/segment.cpp +++ b/test/data/segment.cpp @@ -47,11 +47,12 @@ BOOST_AUTO_TEST_CASE(SmallSize8Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[1]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*sample_data, i); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -70,11 +71,12 @@ BOOST_AUTO_TEST_CASE(MediumSize8Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[1]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*sample_data, i % 256); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -95,11 +97,12 @@ BOOST_AUTO_TEST_CASE(MaxSize8Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[1]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*sample_data, i % 256); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -120,13 +123,14 @@ BOOST_AUTO_TEST_CASE(MediumSize24Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[3]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*((uint8_t*)sample_data), 3*i % 256); BOOST_CHECK_EQUAL(*((uint8_t*)(sample_data+1)), (3*i+1) % 256); BOOST_CHECK_EQUAL(*((uint8_t*)(sample_data+2)), (3*i+2) % 256); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -147,11 +151,12 @@ BOOST_AUTO_TEST_CASE(MediumSize32Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[sizeof(uint32_t)]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*((uint32_t*)sample_data), i); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -173,11 +178,12 @@ BOOST_AUTO_TEST_CASE(MaxSize32Single) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[sizeof(uint32_t)]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*((uint32_t*)sample_data), i); - delete[] sample_data; } + delete[] sample_data; } */ /* --- For debugging only @@ -197,11 +203,12 @@ BOOST_AUTO_TEST_CASE(MediumSize32Multi) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[sizeof(uint32_t)]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*((uint32_t*)sample_data), i); - delete[] sample_data; } + delete[] sample_data; } */ BOOST_AUTO_TEST_CASE(MaxSize32Multi) @@ -220,13 +227,43 @@ BOOST_AUTO_TEST_CASE(MaxSize32Multi) BOOST_CHECK(s.get_sample_count() == num_samples); + uint8_t *sample_data = new uint8_t[sizeof(uint32_t) * num_samples]; + for (uint32_t i = 0; i < num_samples; i++) { + s.get_raw_samples(i, 1, sample_data); + BOOST_CHECK_EQUAL(*((uint32_t*)sample_data), i); + } + + s.get_raw_samples(0, num_samples, sample_data); + for (uint32_t i = 0; i < num_samples; i++) { + BOOST_CHECK_EQUAL(*((uint32_t*)(sample_data + i * sizeof(uint32_t))), i); + } + delete[] sample_data; +} + +BOOST_AUTO_TEST_CASE(MaxSize32MultiAtOnce) +{ + Segment s(1, sizeof(uint32_t)); + + // Chunk size is num*unit_size, so with pv::data::Segment::MaxChunkSize/unit_size, we reach the maximum size + uint32_t num_samples = 3*(pv::data::Segment::MaxChunkSize / sizeof(uint32_t)); + + //----- Add all samples, requiring multiple chunks, in one call ----// + uint32_t *data = new uint32_t[num_samples]; + for (uint32_t i = 0; i < num_samples; i++) + data[i] = i; + + s.append_samples(data, num_samples); + delete[] data; + + BOOST_CHECK(s.get_sample_count() == num_samples); + + uint8_t *sample_data = new uint8_t[sizeof(uint32_t) * num_samples]; for (uint32_t i = 0; i < num_samples; i++) { - uint8_t* sample_data = s.get_raw_samples(i, 1); + s.get_raw_samples(i, 1, sample_data); BOOST_CHECK_EQUAL(*((uint32_t*)sample_data), i); - delete[] sample_data; } - uint8_t* sample_data = s.get_raw_samples(0, num_samples); + s.get_raw_samples(0, num_samples, sample_data); for (uint32_t i = 0; i < num_samples; i++) { BOOST_CHECK_EQUAL(*((uint32_t*)(sample_data + i * sizeof(uint32_t))), i); }