]> sigrok.org Git - pulseview.git/blobdiff - test/data/logicsnapshot.cpp
pv::data::DecoderStack: Set _row for each annotation.
[pulseview.git] / test / data / logicsnapshot.cpp
index 3e3ff2f959da2577b2e21d3083c44146bbeddc34..5fc17213ba1ca06e2a2d5d0b84686ee0b60957a3 100644 (file)
 
 #include <extdef.h>
 
-#define __STDC_LIMIT_MACROS
 #include <stdint.h>
 
 #include <boost/test/unit_test.hpp>
 
 #include "../../pv/data/logicsnapshot.h"
 
-using namespace std;
-
 using pv::data::LogicSnapshot;
+using std::vector;
 
 BOOST_AUTO_TEST_SUITE(LogicSnapshotTest)
 
@@ -142,7 +140,7 @@ BOOST_AUTO_TEST_CASE(Basic)
        BOOST_CHECK_EQUAL(edges[0].first, 0);
        BOOST_CHECK_EQUAL(edges[1].first, 8);
        BOOST_CHECK_EQUAL(edges[2].first, 16);
-       BOOST_CHECK_EQUAL(edges[3].first, 255);
+       BOOST_CHECK_EQUAL(edges[3].first, 256);
 
        // Test a subset at high zoom
        edges.clear();
@@ -152,7 +150,7 @@ BOOST_AUTO_TEST_CASE(Basic)
        BOOST_CHECK_EQUAL(edges[0].first, 6);
        BOOST_CHECK_EQUAL(edges[1].first, 8);
        BOOST_CHECK_EQUAL(edges[2].first, 16);
-       BOOST_CHECK_EQUAL(edges[3].first, 17);
+       BOOST_CHECK_EQUAL(edges[3].first, 18);
 }
 
 BOOST_AUTO_TEST_CASE(LargeData)
@@ -265,7 +263,7 @@ BOOST_AUTO_TEST_CASE(LargeData)
                BOOST_CHECK_EQUAL(edges[i].second, i & 1);
        }
 
-       BOOST_CHECK_EQUAL(edges[31].first, 999999);
+       BOOST_CHECK_EQUAL(edges[31].first, 1000000);
 
        // Check in very low zoom case
        edges.clear();
@@ -403,7 +401,7 @@ BOOST_AUTO_TEST_CASE(LongPulses)
                BOOST_CHECK_EQUAL(edges[i*2+1].second, false);
        }
 
-       BOOST_CHECK_EQUAL(edges.back().first, Length-1);
+       BOOST_CHECK_EQUAL(edges.back().first, Length);
        BOOST_CHECK_EQUAL(edges.back().second, false);
 
        //----- Test get_subsampled_edges at a simplified scale -----//
@@ -420,7 +418,7 @@ BOOST_AUTO_TEST_CASE(LongPulses)
                BOOST_CHECK_EQUAL(edges[i+1].second, false);
        }
 
-       BOOST_CHECK_EQUAL(edges.back().first, Length-1);
+       BOOST_CHECK_EQUAL(edges.back().first, Length);
        BOOST_CHECK_EQUAL(edges.back().second, false);
 }
 
@@ -490,7 +488,7 @@ BOOST_AUTO_TEST_CASE(WideData)
        logic.length = Length * sizeof(data[0]);
        logic.data = data;
 
-       for(int i = 0; i < Length; i++)
+       for (int i = 0; i < Length; i++)
                data[i] = 0x0FF0;
 
        LogicSnapshot s(logic);
@@ -509,4 +507,28 @@ BOOST_AUTO_TEST_CASE(WideData)
        delete [] data;
 }
 
+/*
+ * This test is a replica of sixteen.sr attached to Bug #33.
+ */
+BOOST_AUTO_TEST_CASE(Sixteen)
+{
+       const int Length = 8;
+       uint16_t data[Length];
+
+       sr_datafeed_logic logic;
+       logic.unitsize = sizeof(data[0]);
+       logic.length = Length * sizeof(data[0]);
+       logic.data = data;
+
+       for (int i = 0; i < Length; i++)
+               data[i] = 0xFFFE;
+
+       LogicSnapshot s(logic);
+
+       vector<LogicSnapshot::EdgePair> edges;
+       s.get_subsampled_edges(edges, 0, 2, 0.0004, 1);
+
+       BOOST_CHECK_EQUAL(edges.size(), 2);
+}
+
 BOOST_AUTO_TEST_SUITE_END()