Skip to content
Snippets Groups Projects
Commit e315406f authored by Nico's avatar Nico
Browse files

Adiciona obras ok

parent d266c8e7
No related branches found
No related tags found
No related merge requests found
......@@ -13,19 +13,19 @@ ControladorObras::ControladorObras() {}
void ControladorObras::mostrarDetalhes() const {
for (const auto& obra : this->obras) {
obra.mostrarDetalhes();
cout << endl;
}
}
// Methods
pair<int, int> ControladorObras::pesquisarObra(DescricaoObra descricao){
pair<int, int> ControladorObras::pesquisarObra(DescricaoObra& descricao){
pair <int, int> p = make_pair(0, 0);
auto it_obra = find_if(this->obras.begin(), this->obras.end(), [&descricao](Obra& d) {
d.mostrarDetalhes();
return descricao == d.getDescricaoObra();
return descricao.getTitulo() == d.getTitulo();
});
if (it_obra != this->obras.end()) {
if (it_obra == this->obras.end()) {
cout << "> Erro: Obra não encontrada" << endl;
} else {
p = make_pair(it_obra->getTotal(), it_obra->getDisponiveis());
......@@ -34,9 +34,9 @@ pair<int, int> ControladorObras::pesquisarObra(DescricaoObra descricao){
return p;
}
void ControladorObras::adicionarObra(DescricaoObra descricao){
void ControladorObras::adicionarObra(DescricaoObra& descricao){
auto it_obra = find_if(this->obras.begin(), this->obras.end(), [&descricao](Obra& d) {
return descricao == d.getDescricaoObra();
return descricao.getTitulo() == d.getTitulo();
});
if (it_obra == this->obras.end()) {
......@@ -47,13 +47,13 @@ void ControladorObras::adicionarObra(DescricaoObra descricao){
}
}
bool ControladorObras::solicitarEmprestimo(DescricaoObra descricao){
bool ControladorObras::solicitarEmprestimo(DescricaoObra& descricao){
return true;
}
bool ControladorObras::devolverEmprestimo(DescricaoObra descricao){
bool ControladorObras::devolverEmprestimo(DescricaoObra& descricao){
return true;
}
......@@ -19,10 +19,10 @@ class ControladorObras {
void mostrarDetalhes() const;
// Methods
pair<int, int> pesquisarObra(DescricaoObra descricao);
void adicionarObra(DescricaoObra descricao);
bool solicitarEmprestimo(DescricaoObra descricao);
bool devolverEmprestimo(DescricaoObra descricao);
pair<int, int> pesquisarObra(DescricaoObra& descricao);
void adicionarObra(DescricaoObra& descricao);
bool solicitarEmprestimo(DescricaoObra& descricao);
bool devolverEmprestimo(DescricaoObra& descricao);
};
......
File deleted
......@@ -17,7 +17,7 @@ class DescricaoObra {
// Contructor
DescricaoObra();
DescricaoObra(const string& tipo, const string& titulo, int ano);
virtual void mostrarDetalhes() const;
virtual void mostrarDetalhes() const = 0;
// Operators
bool operator==(const DescricaoObra& other) const;
......
File deleted
File deleted
......@@ -6,7 +6,7 @@
#include "./Periodico.hpp"
// Constructor
Obra::Obra(DescricaoObra descricao)
Obra::Obra(DescricaoObra& descricao)
: descricao(descricao), disponiveis(1), total(1) {}
void Obra::mostrarDetalhes() const {
......@@ -29,14 +29,8 @@ void Obra::adicionarObra(){
this->disponiveis++;
}
DescricaoObra Obra::getDescricaoObra() {
if (this->descricao.getTipo() == "livro") {
Livro l = static_cast<Livro&>(this->descricao);
return Livro(l.getTitulo(), l.getAnoPublicacao(), l.getAutor(), l.getEditora());
} else {
Periodico p = static_cast<Periodico&>(this->descricao);
return Periodico(p.getTitulo(), p.getAnoPublicacao(), p.getVolume(), p.getMes());
}
string Obra::getTitulo() {
return this->descricao.getTitulo();
}
int Obra::getDisponiveis(){
......
......@@ -5,21 +5,21 @@
class Obra {
private:
DescricaoObra descricao;
DescricaoObra& descricao;
int disponiveis;
int total;
public:
// Contructor
Obra();
Obra(DescricaoObra descricao);
Obra(DescricaoObra& descricao);
virtual void mostrarDetalhes() const;
// Methods
bool emprestar();
void devolver();
void adicionarObra();
DescricaoObra getDescricaoObra();
string getTitulo();
int getDisponiveis();
int getTotal();
......
File deleted
File deleted
#include <iostream>
#include <tuple>
#include "doctest.h"
#include "../sources/ControladorObras.hpp"
#include "../sources/Livro.hpp"
#include "../sources/Periodico.hpp"
TEST_CASE("Adicionar Periodico") {
cout << "==================> Adicionar Periodico <==================" << endl;
TEST_CASE("Adicionar Obras") {
cout << "==================> Adicionar Obras <==================" << endl;
cout << "> Instanciando o Controlador de Obras" << endl;
ControladorObras contObras;
......@@ -21,20 +22,35 @@ TEST_CASE("Adicionar Periodico") {
cout << "==> Adicionando a obra" << endl;
contObras.adicionarObra(p);
contObras.mostrarDetalhes();
cout << endl;
auto [total, disponiveis] = contObras.pesquisarObra(p);
CHECK (1 == total);
CHECK (1 == disponiveis);
cout << "======================================================" << endl;
//adicionar um que ja existe, incrementar
}
cout << "==> Adicionando mais uma unidade da obra" << endl;
contObras.adicionarObra(p);
contObras.mostrarDetalhes();
tie(total, disponiveis) = contObras.pesquisarObra(p);
CHECK (2 == total);
CHECK (2 == disponiveis);
cout << "=> Instanciando um Livro: " << endl;
Livro l("C++ Programming", 2022, "John Doe", "Tech Books");
l.mostrarDetalhes();
cout << endl;
//cadastrar periodico
// cout << "==> Instanciando um Livro: " << endl;
// Livro l("C++ Programming", 2022, "John Doe", "Tech Books");
// l.mostrarDetalhes();
// contObras.adicionarObra("livro", l);
// cout << endl;
CHECK ("C++ Programming" == l.getTitulo());
CHECK (2022 == l.getAnoPublicacao());
CHECK ("John Doe" == l.getAutor());
CHECK ("Tech Books" == l.getEditora());
cout << "==> Adicionando a obra" << endl;
contObras.adicionarObra(l);
contObras.mostrarDetalhes();
tie(total, disponiveis) = contObras.pesquisarObra(l);
CHECK (1 == total);
CHECK (1 == disponiveis);
cout << "======================================================" << endl;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment