/*****************************************************************************
 * FILE: tank.cpp                                                            *
 * CLASS PROVIDED: mixing_tank (part of namespace CS256_Asgn1)               *
 *    See tank.h for documentation                                           *
 *                                                                           *
 *****************************************************************************/
#include <cassert>
#include "tank.h"

using namespace std;

namespace CS256_Asgn1
{
  
  mixing_tank::mixing_tank( )
  { 
    amount_a = 0;
    amount_b =0;
    total_cap= 100;
    total_quan = 0;
  }
  
  mixing_tank::mixing_tank( float capacity)
  { 
    amount_a = 0;
    amount_b = 0;
    total_cap= capacity;
    total_quan =0 ;
    
  }
  
  // MODIFICATION MEMBER FUNCTIONS
  void mixing_tank::add_A( float quantity )
  { 
    assert (quantity >= 0);
    assert (get_space () >= quantity);
    amount_a += quantity;
    total_quan += quantity;
   
  }
  
  void mixing_tank::add_B (float quantity)
  {
    assert (quantity >= 0);
    assert (get_space () >= quantity);
    amount_b += quantity;
    total_quan +=quantity;
  }
  
  float mixing_tank::draw (float quantity)
  {
  	float proportion, temp_to, a, b;
  	assert(quantity >= 0);
  	if (quantity <= get_volume())
  	{
  		proportion = quantity /total_quan;
  		a = amount_a;
  		b = amount_b;
  		amount_a *= proportion;
  		amount_b *= proportion;
  		total_quan = total_quan - (amount_a + amount_b);
  		amount_a = a - amount_a;
  		amount_b = b - amount_b;
  		return quantity;
  	}	
  	else{
  	  temp_to = total_quan;
  	  total_quan = 0;
  	  return temp_to;
  	}
    
  }
  
  //CONSTANT MEMBER FUNCTION
  float mixing_tank::get_space() const
  {
  	return (total_cap - total_quan);
  }
  float mixing_tank::get_volume() const
  {
 	return total_quan;
  }	 
  float mixing_tank::get_mix() const
  {
  	return (amount_a/total_quan	);
  }
  bool mixing_tank::is_empty() const
  {
  	return (total_quan == 0);
  }
}


