Write an Abstract Data Type for a fraction encapsulated within a C class.
The storage system shall consist of a numerator and a denominator.
The predefined operations shall consist of all mathematical operators, conditional operators, and input and output operators using cin and cout respectively.
Write a test driver program that verifies and validates the fraction Abstract Data Type.