// file: TesterOfTSAC.hpp

#ifndef TESTER_OF_TSAC_HPP_
#define TESTER_OF_TSAC_HPP_

#include <cassert>
#include <iostream>
#include <vector>

#include "InitializerOfArray.hpp"

	template <typename T>
	class TesterOfTSAC
		// Instantiation condition: T is a comparable type.
	{
		protected:
			std::vector<T> * array;
			
			InitializerOfArray<T> * ia;
			
		public:			
			std::vector<T> & get_array () {return *array;}
			
			InitializerOfArray<T> & get_ia () {return *ia;}
			
			TesterOfTSAC (int size, T min, T max);
	}; // TesterOfTSAC
	
	template <typename T>
	TesterOfTSAC<T>::TesterOfTSAC (int size, T min, T max)
    {
		assert(size > 0);										// precondition
		assert(min <= max);					            		// precondition
		array = new std::vector<T>(size);
		ia = new InitializerOfArray<T>(min, max);
		ia->init_random(*array);
		std::cout << "array: "; ia->print(*array);
	}
	
#endif // TESTER_OF_TSAC_HPP_
