#- Copyright (c) 2008-2020 James Grenning --- All rights reserved
#- For exclusive use by participants in 
#- Wingman Software training courses.
#- Cannot be used by attendees to train others without 
#- written permission.
#- www.wingman-sw.com james@wingman-sw.com

Objectives
----------
Practice TDD on a stand alone module.
Build useful, fully tested code.
Get the feel for working in small verifiable steps.
Experience pair programming.

Requirements
------------
We need a circular buffer module to hold integers.  
The CircularBuffer manages a first-in first-out 
data structure.  You can put integers in, and get 
them out.  You can query it for empty or full.  
You specify its size when it is created. It must 
handle edge cases and errors.  Getting from a empty
buffer returns the custom default value provided
at construction time.

General Instructions
--------------------
In this exercise, pretend that you are pair 
programming with James.  He writes 
the test, then lets you create the needed
production code to pass the test. 

James can't run around and really program with 
each of you individually at the same time.  
So you simulate working with James by enabling 
ONE test at a time by moving the #ifdef, in the 
test file, down the file one test at a time.

Along the way you will find comments that are 
intended to get you (and your partner) to 
understand the flow of TDD, what is being test-driven 
now and what is being put off until later.  Make 
sure you understand what the test is trying to 
accomplish.  Feel free to ask your instructor 
for clarification.

DELETE COMMENTS ABOVE THGE CURRENT PASSING TEST AS YOU WORK.
 
Write just enough production code to first satisfy 
the compiler, and then satisfy the linker.  The 
production code should initially fail the test, 
showing that the test can detect the wrong behavior.  
Finally add just enough code to pass the test
and meet the intention.  

Role of your pair partner
-------------------------
If you are pairing, help each other learn TDD.  Do 
not write code that is ahead of the tests.  Partners 
should ask "Do you have a test for that?" when you 
see the code has gotten ahead of the tests.  Swap the 
keyboard regularly.

Keep your code warning free.

WARNING: Your instructor reserves the right to delete any 
code not required by your current test cases.  You might 
consider it as his/her duty!

