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;
 }