diff --git a/TDD/biblioteca_test b/TDD/biblioteca_test new file mode 100755 index 0000000000000000000000000000000000000000..3a4c1c6d6330dca4ef5b9cc62c030c98b4500d76 Binary files /dev/null and b/TDD/biblioteca_test differ diff --git a/TDD/sources/biblioteca-test.cpp b/TDD/sources/biblioteca-test.cpp index 681630301b11aee96db362b137e4d0b25c3fc2bb..3bcc8e48dbc1c28c1e29c308ac35648f09bee76b 100644 --- a/TDD/sources/biblioteca-test.cpp +++ b/TDD/sources/biblioteca-test.cpp @@ -109,10 +109,86 @@ TEST_CASE("Biblioteca") { CHECK (unsigned(hoje.month()) == unsigned(dataDevolucao.month())); CHECK (unsigned(hoje.day()) == unsigned(dataDevolucao.day())); + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Periodico>(p)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (1 == disponiveis); + CHECK (2 == total); + cout << "=> Retorna uma obra que existe: " << endl; CHECK (0 == contUsuarios.retornarEmprestimo("12345", make_shared<Periodico>(p))); - //obra existe e ja tem tres emprestimos + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Periodico>(p)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (2 == disponiveis); + CHECK (2 == total); + + cout << "=> Empresta novamente a obra: " << endl; + dataDevolucao = contUsuarios.registrarEmprestimo("12345", make_shared<Periodico>(p)); + CHECK (int(hoje.year()) == int(dataDevolucao.year())); + CHECK (unsigned(hoje.month()) == unsigned(dataDevolucao.month())); + CHECK (unsigned(hoje.day()) == unsigned(dataDevolucao.day())); + + cout << "=> Empresta a segunda obra: " << endl; + dataDevolucao = contUsuarios.registrarEmprestimo("12345", make_shared<Periodico>(p)); + CHECK (int(hoje.year()) == int(dataDevolucao.year())); + CHECK (unsigned(hoje.month()) == unsigned(dataDevolucao.month())); + CHECK (unsigned(hoje.day()) == unsigned(dataDevolucao.day())); + + cout << "=> Obra nao tem exemplares disponiveis: " << endl; + dataDevolucao = contUsuarios.registrarEmprestimo("54321", make_shared<Periodico>(p1)); + CHECK (int(epoch.year()) == int(dataDevolucao.year())); + CHECK (unsigned(epoch.month()) == unsigned(dataDevolucao.month())); + CHECK (unsigned(epoch.day()) == unsigned(dataDevolucao.day())); + + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Periodico>(p)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (0 == disponiveis); + CHECK (2 == total); + + cout << "=> Empresta a terceira obra: " << endl; + dataDevolucao = contUsuarios.registrarEmprestimo("12345", make_shared<Livro>(l)); + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Livro>(l)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (0 == disponiveis); + CHECK (1 == total); + + cout << "=> Não pode emprestar a quarta obra: " << endl; + Livro l2("Java Programming", 2022, "John Doe", "Tech Books"); + contObras.adicionarObra(make_shared<Livro>(l2)); + + dataDevolucao = contUsuarios.registrarEmprestimo("12345", make_shared<Livro>(l2)); + CHECK (int(epoch.year()) == int(dataDevolucao.year())); + CHECK (unsigned(epoch.month()) == unsigned(dataDevolucao.month())); + CHECK (unsigned(epoch.day()) == unsigned(dataDevolucao.day())); + + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Livro>(l2)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (1 == disponiveis); + CHECK (1 == total); + + cout << "=> Retorna uma obra e pode realizar novo emprestimo: " << endl; + cout << "==> Retorna: " << endl; + CHECK (0 == contUsuarios.retornarEmprestimo("12345", make_shared<Periodico>(p))); + + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Periodico>(p)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (1 == disponiveis); + CHECK (2 == total); + + cout << "==> Empresta: " << endl; + Livro l3("Phyton Programming", 2022, "John Doe", "Tech Books"); + contObras.adicionarObra(make_shared<Livro>(l3)); + + dataDevolucao = contUsuarios.registrarEmprestimo("12345", make_shared<Livro>(l3)); + CHECK (int(hoje.year()) == int(dataDevolucao.year())); + CHECK (unsigned(hoje.month()) == unsigned(dataDevolucao.month())); + CHECK (unsigned(hoje.day()) == unsigned(dataDevolucao.day())); + + tie(total, disponiveis) = contObras.pesquisarObra(make_shared<Livro>(l3)); + cout << "Disponiveis/Total: " << disponiveis << "/" << total << endl; + CHECK (0 == disponiveis); + CHECK (1 == total); + //usuario devolveu com atraso, nao pode emprestar depois cout << "======================================================" << endl; diff --git a/sources/Usuario.cpp b/sources/Usuario.cpp index bedb1db400fc31cd5daa93c077dd93e5ccf7e457..f790963754768a29c62fe5fbab6fd245adaebfe7 100644 --- a/sources/Usuario.cpp +++ b/sources/Usuario.cpp @@ -61,7 +61,7 @@ bool Usuario::devolver(shared_ptr<DescricaoObra> descricao){ emp_it->removeEmprestimo(); // Remove work - // this->emprestimos->erase(emp_it); + this->emprestimos->erase(emp_it); return true; }