SensorEventQueue_test.cpp revision 92863c14b7d36f74ec715b45ca6adc8bf95dc87c
1#include <stdio.h> 2#include <stdlib.h> 3#include <hardware/sensors.h> 4#include <pthread.h> 5#include <cutils/atomic.h> 6 7#include "SensorEventQueue.cpp" 8 9// Unit tests for the SensorEventQueue. 10 11// Run it like this: 12// 13// make sensorstests -j32 && \ 14// out/host/linux-x86/obj/EXECUTABLES/sensorstests_intermediates/sensorstests 15 16bool checkWritableBufferSize(SensorEventQueue* queue, int requested, int expected) { 17 sensors_event_t* buffer; 18 int actual = queue->getWritableRegion(requested, &buffer); 19 if (actual != expected) { 20 printf("Expected buffer size was %d; actual was %d\n", expected, actual); 21 return false; 22 } 23 return true; 24} 25 26bool checkSize(SensorEventQueue* queue, int expected) { 27 int actual = queue->getSize(); 28 if (actual != expected) { 29 printf("Expected queue size was %d; actual was %d", expected, actual); 30 return false; 31 } 32 return true; 33} 34 35bool testSimpleWriteSizeCounts() { 36 printf("TEST testSimpleWriteSizeCounts\n"); 37 SensorEventQueue* queue = new SensorEventQueue(10); 38 if (!checkSize(queue, 0)) return false; 39 if (!checkWritableBufferSize(queue, 11, 10)) return false; 40 if (!checkWritableBufferSize(queue, 10, 10)) return false; 41 if (!checkWritableBufferSize(queue, 9, 9)) return false; 42 43 queue->markAsWritten(7); 44 if (!checkSize(queue, 7)) return false; 45 if (!checkWritableBufferSize(queue, 4, 3)) return false; 46 if (!checkWritableBufferSize(queue, 3, 3)) return false; 47 if (!checkWritableBufferSize(queue, 2, 2)) return false; 48 49 queue->markAsWritten(3); 50 if (!checkSize(queue, 10)) return false; 51 if (!checkWritableBufferSize(queue, 1, 0)) return false; 52 53 printf("passed\n"); 54 return true; 55} 56 57bool testWrappingWriteSizeCounts() { 58 printf("TEST testWrappingWriteSizeCounts\n"); 59 SensorEventQueue* queue = new SensorEventQueue(10); 60 queue->markAsWritten(9); 61 if (!checkSize(queue, 9)) return false; 62 63 // dequeue from the front 64 queue->dequeue(); 65 queue->dequeue(); 66 if (!checkSize(queue, 7)) return false; 67 if (!checkWritableBufferSize(queue, 100, 1)) return false; 68 69 // Write all the way to the end. 70 queue->markAsWritten(1); 71 if (!checkSize(queue, 8)) return false; 72 // Now the two free spots in the front are available. 73 if (!checkWritableBufferSize(queue, 100, 2)) return false; 74 75 // Fill the queue again 76 queue->markAsWritten(2); 77 if (!checkSize(queue, 10)) return false; 78 79 printf("passed\n"); 80 return true; 81} 82 83int main(int argc, char **argv) { 84 if (testSimpleWriteSizeCounts() && 85 testWrappingWriteSizeCounts()) { 86 printf("ALL PASSED\n"); 87 } else { 88 printf("SOMETHING FAILED\n"); 89 } 90 return EXIT_SUCCESS; 91} 92