#- 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

Current Situation
-----------------
The CEO is due here any minute for a demo. He may bring
the new hardware fresh from the vendor.  We want to have
working cleac code covered by tests.  The CEO is an
ex-programmer and knows clean code and the value of tests.
We need to show working code, not throw away prototypes.
Keep focused on adding new functionality test by test.

General Instructions
--------------------
Please do not change non-highlighted files
 -- let my know if you think you have to.

------------------------------------------------------------
Part-1 Spies and Fakes
------------------------------------------------------------

Objectives
----------
To create a spy for the LightController.

To practice test-driving and working in small steps.

To practice creating tests as documentation.

Exercise
--------
We are going to test drive the LightController interface and spy implementation.

The LightControllerSpy implements a spy version of the
LightController interface functions.  The spy also has
a few extra functions to access the intelligence
collected by the spy.  You can find the interface function
declarations in the design discussion in the notes.

    The LightController's interface needs to support
    functions to turn on and off lights. Light states
    cannot be queried through the LightController.

    Write tests for the LightControllerSpy that documents
    its behavior.
        - The spy lights are initialized.
        - A single light can be told to turn on
        - A single light can be told to turn off

    The course notes provide an example of the
    LightControlerSpy and its tests.

Ask for help if you need it.  Share the keyboard.

After you finish this exercise
------------------------------

- Let me know you are finished.
- Look at the M42LightController implementation.
- Review FakeTimeServiceTests.cpp and implementation.
