int main(int argc, char **argv)
{
    plan_tests(14);

    OverwritingRingBuffer<unsigned,4> buffer;
    ok1(buffer.empty());

    buffer.push(1);
    ok1(!buffer.empty());
    ok1(buffer.peek() == 1);
    ok1(buffer.shift() == 1);
    ok1(buffer.empty());

    buffer.push(2);
    buffer.push(3);
    buffer.push(4);
    buffer.push(5);
    ok1(!buffer.empty());

    OverwritingRingBuffer<unsigned,4>::const_iterator i = buffer.begin();
    OverwritingRingBuffer<unsigned,4>::const_iterator end = buffer.end();
    ok1(*i == 3);
    ++i;
    ok1(*i == 4);
    ++i;
    ok1(*i == 5);
    ++i;
    ok1(i == end);

    ok1(buffer.shift() == 3);
    ok1(buffer.shift() == 4);
    ok1(buffer.shift() == 5);
    ok1(buffer.empty());

    return exit_status();;
}
 double GetDeltaY() const {
   return buffer.last().y - buffer.peek().y;
 }
 /**
  * Add a new sample.
  */
 void Push(double x, double y) {
   buffer.push({x, y});
 }
 double GetFirstX() const {
   return buffer.peek().x;
 }
 double GetLastX() const {
   return buffer.last().x;
 }
 bool IsEmpty() const {
   return buffer.empty();
 }
 void Clear() {
   buffer.clear();
 }
 /**
  * Add a new sample.
  */
 void Push(fixed x, fixed y) {
   buffer.push({x, y});
 }
 fixed GetLastX() const {
   return buffer.last().x;
 }
 fixed GetFirstX() const {
   return buffer.peek().x;
 }