#include "aluno.H"

using namespace std;

istream& operator>>(istream& entrada, Aluno& aluno) 
{
    int novo_numero, nova_nota;
    string novo_nome;
    entrada >> novo_nome >> novo_numero >> nova_nota;

    if(not entrada.fail())
	if(0 <= nova_nota and nova_nota <= nota_maxima and 0 <= novo_numero)
	    aluno = Aluno(novo_nome, novo_numero, nova_nota);
	else
	    entrada.setstate(ios/*_base*/::failbit);

    return entrada;
}

#ifdef TESTE

#include <fstream>

int main() 
{
    ofstream canal_para_escrever_a_pauta("pauta.txt");

    Aluno manelito("Manelito", 17);

    canal_para_escrever_a_pauta << manelito;
    canal_para_escrever_a_pauta.close();

    ifstream canal_para_ler_a_pauta("pauta.txt");

    Aluno manelito_guardado("Zé Ninguém", 0);

    canal_para_ler_a_pauta >> manelito_guardado;

    assert(manelito.numero() == manelito_guardado.numero() and
	   manelito.nome() == manelito_guardado.nome() and
	   manelito.nota() == manelito_guardado.nota());
}

#endif // TESTE
