#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)
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();
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)
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();
//----- Create a LogicSnapshot -----//
sr_datafeed_logic logic;
logic.unitsize = 8;
- logic.length = Length;
+ logic.length = Length * 8;
logic.data = (uint64_t*)new uint64_t[Length];
uint64_t *p = (uint64_t*)logic.data;
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 -----//
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);
}
}
/*
- * This test checks the rendering of wide data (more than 8 probes)
+ * This test checks the rendering of wide data (more than 8 channels)
* Probe signals are either all-high, or all-low, but are interleaved such that
- * they would toggle during every sample if treated like 8 probes.
+ * they would toggle during every sample if treated like 8 channels.
* The packet contains a large number of samples, so the mipmap generation kicks
* in.
*
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);
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()