Exercise: MockSensor_nopoly (Non-Polymorphic)

Requirement

Implement a sensor class MockSensor_nopoly which does not access any real hardware to measure temperature. Rather, it has a method set_temperature() which can be used (by unit tests, ideally) to control the value that is returned by subsequent calls to get_temperature().

Use the following test to guide you through the implementation:

#include <gtest/gtest.h>
#include <sensor-mock-nopoly.h>

TEST(sensor_mock_nopoly_suite, basic)
{
    MockSensor_nopoly ms(/*initial temperature:*/36.4);
    ASSERT_FLOAT_EQ(ms.get_temperature(), 36.4);
    ms.set_temperature(42.8);
    ASSERT_FLOAT_EQ(ms.get_temperature(), 42.8);
}

Topics Covered

cluster_c The C Programming Language cluster_c_introduction Introduction cluster_linux Linux cluster_linux_toolchain Toolchain, And Cross Development cluster_linux_basics Linux Basics cluster_linux_basics_shell The Shell (Bash - “Bourne Again Shell”) cluster_linux_basics_intro Introduction: Concepts and Terminology cluster_cxx C++: Miscellaneous Live-Hacking cluster_cxx_exercises C++ Exercises cluster_cxx03 C++ cluster_cxx03_data_encapsulation Data Encapsulation c_introduction_installation Installation linux_toolchain_basics Toolchain: Basics linux_basics_shell_file_dir_create_rm Creating And Removing Files and Directories linux_toolchain_basics->linux_basics_shell_file_dir_create_rm linux_toolchain_static_library Object Code Archives/Static Libraries linux_toolchain_separate_compilation Zooming In: Separate Compilation, and Linking Statically linux_toolchain_static_library->linux_toolchain_separate_compilation linux_toolchain_cmake_local CMake: Local Build linux_toolchain_cmake_local->linux_toolchain_static_library linux_toolchain_separate_compilation->linux_toolchain_basics linux_basics_shell_cwd Current Working Directory linux_basics_shell_commandline Commandline linux_basics_shell_cwd->linux_basics_shell_commandline linux_basics_shell_paths Absolute and Relative Paths linux_basics_shell_cwd->linux_basics_shell_paths linux_basics_intro_process Processes, Scheduling, Address Spaces linux_basics_shell_cwd->linux_basics_intro_process linux_basics_shell_file_dir_create_rm->linux_basics_shell_cwd linux_basics_shell_file_dir_create_rm->linux_basics_shell_paths linux_basics_intro_overview Overview linux_basics_shell_commandline->linux_basics_intro_overview linux_basics_shell_paths->linux_basics_shell_commandline linux_basics_intro_process->linux_basics_intro_overview cxx_exercises_sensor_mock_nopoly Exercise: MockSensor_nopoly (Non-Polymorphic) cxx_exercises_sensor_mock_nopoly->linux_toolchain_cmake_local cxx03_data_encapsulation_classes_objects Classes and Objects cxx_exercises_sensor_mock_nopoly->cxx03_data_encapsulation_classes_objects cxx03_introduction Introduction cxx03_introduction->c_introduction_installation cxx03_data_encapsulation_classes_objects->cxx03_introduction cxx03_data_encapsulation_c Object Oriented Programming In Good Ol’ C cxx03_data_encapsulation_classes_objects->cxx03_data_encapsulation_c cxx03_data_encapsulation_c->cxx03_introduction