Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// last entry for stream2
timestamp: 121,
streams: {
stream2: {value: 40}
}
},
{
// empty entry for stream2
timestamp: 122,
streams: {
stream2: null
}
}
];
const streamSynchronizer = new StreamSynchronizer(STREAMS_WITH_NO_DATA_ENTRIES);
// Test a time before any valid entries and with no entries within TIME_WINDOW
streamSynchronizer.setTime(99);
let data = streamSynchronizer.getLogSlice();
t.equals(data.streams.stream1, undefined, 'stream1 is undefined at time 99');
t.equals(data.streams.stream2, undefined, 'stream2 is undefined at time 99');
// Test with a valid entry for stream1 and no entry in the window for stream2
streamSynchronizer.setTime(100);
data = streamSynchronizer.getLogSlice();
t.equals(data.streams.stream1.value, 1, 'stream1 is 1 at time 100');
t.equals(data.streams.stream2, undefined, 'stream2 is undefined at time 100');
// Test with a valid entry for both logs
streamSynchronizer.setTime(102);
data = streamSynchronizer.getLogSlice();
testBuffer.timeslices = [
{
timestamp: 50,
streams: {
log1: {value: 1},
log2: {value: 10}
},
links: {
log2: {
target_pose: 'log1'
}
}
}
];
const streamSynchronizer = new StreamSynchronizer(testBuffer);
streamSynchronizer.setTime(50);
setXVIZConfig({ALLOW_MISSING_PRIMARY_POSE: true});
const frame = streamSynchronizer.getCurrentFrame();
t.ok(frame, 'frame is generated without vehicle pose');
t.deepEquals(frame.links, {log2: {target_pose: 'log1'}}, 'frame contains correct links');
t.end();
});
/* eslint-enable camelcase */
tape('StreamSynchronizer#constructor', t => {
const logSynchronizer = new StreamSynchronizer(TEST_BUFFER);
t.ok(logSynchronizer instanceof StreamSynchronizer, 'Constructed');
t.end();
});
tape('StreamSynchronizer#getData', t => {
resetXVIZConfigAndSettings();
setXVIZConfig({TIME_WINDOW: 3});
const logSynchronizer = new StreamSynchronizer(TEST_BUFFER);
for (const tc of TEST_CASES) {
const {time, log1, log2} = tc;
logSynchronizer.setTime(time);
t.comment(`Set time to ${time}`);
const data = logSynchronizer.getLogSlice();
if (log1) {
if (log1 === 'empty_entry') {
t.equals(data.streams.log1.value, undefined, 'Got correct empty entry for log1');
} else {
t.equals(data.streams.log1.value, log1, 'Got correct log1 value');
}
} else {
t.equals(data.streams.log1, undefined, 'Got undefined log1 value');
}
tape('StreamSynchronizer#setTime', t => {
const logSynchronizer = new StreamSynchronizer(TEST_BUFFER);
logSynchronizer.setTime(10);
t.equals(logSynchronizer.getTime(), 10, 'Set and retrieved time');
t.end();
});
tape('StreamSynchronizer#getCurrentFrame', t => {
resetXVIZConfigAndSettings();
setXVIZConfig({TIME_WINDOW: 3});
const streamSynchronizer = new StreamSynchronizer(TEST_BUFFER);
streamSynchronizer.setTime(100);
let frame = streamSynchronizer.getCurrentFrame();
t.notOk(frame, 'frame is null if no vehicle pose');
setXVIZConfig({ALLOW_MISSING_PRIMARY_POSE: true});
frame = streamSynchronizer.getCurrentFrame();
t.ok(frame, 'frame is generated without vehicle pose');
t.deepEquals(
frame.streams,
{log1: {value: 1}, log2: {value: 20}},
'frame contains correct streams'
);
t.ok(
_onXVIZMetadata(metadata) {
this.set('metadata', metadata);
if (metadata.streams && Object.keys(metadata.streams).length > 0) {
this.set('streamSettings', metadata.streams);
}
if (!this.streamBuffer) {
throw new Error('streamBuffer is missing');
}
this.logSynchronizer = this.logSynchronizer || new StreamSynchronizer(this.streamBuffer);
const timestamp = this.get('timestamp');
const newTimestamp = Number.isFinite(timestamp) ? timestamp : metadata.start_time;
if (Number.isFinite(newTimestamp)) {
this.seek(newTimestamp);
}
}