Skip to content

Commit

Permalink
Actualizado los test y en pedido cambiado la n
Browse files Browse the repository at this point in the history
  • Loading branch information
KROSF committed May 17, 2018
1 parent 73e41bb commit 350b228
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 50 deletions.
2 changes: 1 addition & 1 deletion P3/pedido.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ std::ostream& operator << (std::ostream& os ,const Pedido& pe)
<< std::left << std::setw(13) << "Fecha:" << pe.fecha() << std::endl

<< std::left << std::setw(13) << "Pagado con:" << pe.tarjeta()->tipo()
<<" N.º: "<<pe.tarjeta()->numero()<< std::endl
<<" n.º: "<<pe.tarjeta()->numero()<< std::endl

<< std::left << std::setw(13) << "Importe:" << std::fixed
<< std::setprecision(2) << pe.total() << " \u20AC"<< std::endl;
Expand Down
30 changes: 15 additions & 15 deletions Tests-auto/test-auto.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#include <locale>
/**
Lamentablemente, aún <regex>, de la biblioteca estándar de C++11,
no funciona bien en algunas versiones: muy mal en GCC C++ 4.8 y
no funciona bien en algunas versiones: muy mal en GCC C++ 4.8 y
algo menos, pero no bien, en GCC C++ 4.9. A partir de la versión 5 ya
funciona bien. En cuanto a CLang, usa la misma biblioteca que GCC de
forma predeterminada. El problema no es tanto del compilador como de
Expand All @@ -43,17 +43,17 @@

#include "fct.h"

#include "../P1/fecha.hpp"
#include "../P1/cadena.hpp"
#include "fecha.hpp"
#include "cadena.hpp"
#if defined(P2) || defined(P3) || defined(P4)
# include "../P3/articulo.hpp"
# include "../P3/tarjeta.hpp"
# include "../P3/usuario.hpp"
# include "articulo.hpp"
# include "tarjeta.hpp"
# include "usuario.hpp"
#endif
#if defined(P3) || defined(P4)
# include "../P3/pedido.hpp"
# include "../P3/pedido-articulo.hpp"
# include "../P3/usuario-pedido.hpp"
# include "pedido.hpp"
# include "pedido-articulo.hpp"
# include "usuario-pedido.hpp"
#endif

/*********************** COMPROBACIONES *********************/
Expand Down Expand Up @@ -102,15 +102,15 @@ class BadRegex : public std::exception {
a == b ssi < es orden total y !(a < b) y !(b < a)
*/
inline bool operator ==(const Numero& a, const Numero& b)
inline bool operator ==(const Numero& a, const Numero& b)
{
return !(a < b) && !(b < a);
}
#endif

/**
Elimina el separador de decimales, porque da problemas con
algunas localizaciones españolas, que incorrectamente ponen el ".".
algunas localizaciones españolas, que incorrectamente ponen el ".".
También, de paso, fijamos el separador de decimales a la coma.
*/
struct sin_separador : std::numpunct<char> {
Expand All @@ -120,11 +120,11 @@ struct sin_separador : std::numpunct<char> {
};

/**
Plantilla de función de utilidad para convertir algo a cadena (string),
Plantilla de función de utilidad para convertir algo a cadena (string),
aprovechando su operador de inserción en flujo.
*/
template <typename T>
std::string toString(const T& o)
std::string toString(const T& o)
{
std::ostringstream os;
os.imbue(std::locale(std::locale("es_ES.UTF-8"), new sin_separador()));
Expand All @@ -149,8 +149,8 @@ Articulo::Autores crea_autores(Autor& autor);
#ifndef CPP11REGEX
/**
Función que busca una expresión regular dentro de una cadena y
devuelve la posición del comienzo de la primera coincidencia.
Devuelve -1 cuando no encuentra ninguna. Lanza la excepción
devuelve la posición del comienzo de la primera coincidencia.
Devuelve -1 cuando no encuentra ninguna. Lanza la excepción
BadRegex cuando la expresion regular no es válida.
*/
regoff_t find_regex(const char* regex, const char* text) noexcept(false);
Expand Down
8 changes: 4 additions & 4 deletions Tests-auto/test-caso1-2-auto.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p2) {
}
}
FCT_TEST_END();

FCT_TEST_BGN(Numero - validacion: cifra de comprobacion no valida) {
try {
// La cifra de comprobación correcta es 8, no 2
Expand Down Expand Up @@ -195,7 +195,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p2) {
fct_chk(rU.tarjetas () == Usuario::Tarjetas());
}
FCT_TEST_END();

FCT_TEST_BGN(Usuario - Articulos es unordered_map) {
fct_chk(pU->compra().bucket_count());
}
Expand Down Expand Up @@ -314,7 +314,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p2) {
fct_chk(!tarjeta.titular());
}
FCT_TEST_END();

FCT_TEST_BGN(Usuario---Tarjeta - insercion en flujo) {
const Tarjeta tarjeta(TIPO::Mastercard, nTarjeta, *pU, fUnaSemana);
const string s = toString(*pU);
Expand All @@ -339,7 +339,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p2) {
fct_chk_eq_int(pU->compra().begin()->second, 3);
}
FCT_TEST_END();

FCT_TEST_BGN(Usuario---Articulo - meter varias veces) {
pU->compra(articulo1, 1);
pU->compra(articulo1, 3);
Expand Down
54 changes: 27 additions & 27 deletions Tests-auto/test-caso3-auto.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ namespace {
articulo2("110", "Fundamentos de C++", fHoy, 35.95, 50);
#endif
Usuario* pU { nullptr };

Usuario_Pedido *pAsocUsuarioPedido;
Pedido_Articulo *pAsocPedidoArticulo;
Usuario *pU2;
Tarjeta *pTarjetaU;
const Tarjeta *pTarjetaU2;
const Fecha fAyer = fHoy - 1;

const Pedido *pPed1, *pPed2;
const unsigned cantidad_A1_P1 = 1;
const unsigned cantidad_A1_P2 = 3;
const unsigned cantidad_A2_P2 = 5;

bool bPrimera = true;

using TIPO = Tarjeta::Tipo;
Expand Down Expand Up @@ -74,7 +74,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
fct_chk(!v);
}
FCT_TEST_END();

FCT_TEST_BGN(LineaPedido - constructor de 2 parametros y observadores) {
const double pVenta { 7.3 };
const unsigned cantidad { 5 };
Expand All @@ -83,7 +83,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
fct_chk_eq_int(lp.cantidad() , cantidad);
}
FCT_TEST_END();

FCT_TEST_BGN(LineaPedido - insercion en flujo) {
const LineaPedido lp { 9.2, 42 };
chk_eq_cstr(toString(lp), "9,20 €\t42");
Expand Down Expand Up @@ -137,7 +137,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
}
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido - sin stock) {
pU->compra(articulo1, 9001);
try {
Expand All @@ -151,7 +151,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
}
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido - tarjeta caducada) {
pU->compra(articulo1, 4649);
try {
Expand All @@ -164,21 +164,21 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
}
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido - actualizacion relacionados y asociaciones) {
const unsigned int cantidad { 1u };
pU->compra(articulo1, cantidad);
pU->compra(articulo2, cantidad);
const unique_ptr<const Pedido> pPed {
new Pedido { *pAsocUsuarioPedido, *pAsocPedidoArticulo,
*pU, *pTarjetaU, fHoy }
*pU, *pTarjetaU, fHoy }
};

// Actualización de carrito y stock
fct_chk(pU->compra().empty());
fct_chk_eq_int(articulo1.stock(), 49);
fct_chk_eq_int(articulo2.stock(), 49);

// Asociación Usuario-Pedido
fct_chk(pAsocUsuarioPedido->cliente(*const_cast<Pedido*>(pPed.get()))
== pU);
Expand All @@ -187,10 +187,10 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
}
else
fct_chk(!"Debería asociarse al usuario con el pedido");

// Asociación Artículo-Pedido
const Pedido_Articulo::ItemsPedido itPed {
pAsocPedidoArticulo->detalle(* const_cast<Pedido*>(pPed.get()))
pAsocPedidoArticulo->detalle(* const_cast<Pedido*>(pPed.get()))
};
if (itPed.size() == 2) {
// Los artículos deben ir ordenados por código de referencia
Expand All @@ -205,7 +205,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
fct_chk(!"El pedido debería tener dos artículos");
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido - observadores) {
pU->compra(articulo1, 1);
pU->compra(articulo2, 1);
Expand All @@ -220,7 +220,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
fct_chk_eq_dbl(pPed->total(), totalEsperado);
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido - insercion en flujo) {
pU->compra(articulo1, 1);
pU->compra(articulo2, 1);
Expand All @@ -241,7 +241,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
chk_incl_str (sPed, toEuros(totalEsperado) );
}
FCT_TEST_END();

// Pruebas de la clase de asociación Pedido_Articulo

FCT_TEST_BGN(Articulo---Pedido - detalle de un pedido) {
Expand All @@ -264,7 +264,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_clases) {
fct_chk(!"El pedido debería tener un solo elemento");
}
FCT_TEST_END();

FCT_TEST_BGN(Articulo---Pedido - insercion en flujo de ItemsPedido) {
const unsigned int cantidad { 1u };
pU->compra(articulo1, cantidad);
Expand All @@ -285,7 +285,7 @@ FCTMF_FIXTURE_SUITE_END()

FCTMF_FIXTURE_SUITE_BGN(test_p3_informes) {

/// Batería de pruebas para los informes. Simula dos ventas de dos usuarios.
/// Batería de pruebas para los informes. Simula dos ventas de dos usuarios.
FCT_SETUP_BGN() {
pAsocUsuarioPedido = new Usuario_Pedido ;
pAsocPedidoArticulo = new Pedido_Articulo;
Expand All @@ -296,7 +296,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_informes) {

// Primera venta
pU->compra(articulo1, cantidad_A1_P1);
pPed1 = new Pedido(*pAsocUsuarioPedido, *pAsocPedidoArticulo,
pPed1 = new Pedido(*pAsocUsuarioPedido, *pAsocPedidoArticulo,
*pU, *pTarjetaU, fHoy);

// Segunda venta, de otro usuario
Expand Down Expand Up @@ -350,24 +350,24 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_informes) {
FCT_TEST_BGN(Articulo---Pedido - insercion en flujo de Pedidos) {
const auto& pedArticulo1 = pAsocPedidoArticulo->ventas(articulo1);
const string sPedidos { toString(pedArticulo1) };

chk_incl_str(sPedidos, toString(articulo1.precio()));
chk_incl_str(sPedidos, toString(cantidad_A1_P1));
chk_incl_cstr(sPedidos, pPed1->fecha().cadena());
chk_incl_str(sPedidos, toString(cantidad_A1_P2));
chk_incl_cstr(sPedidos, pPed2->fecha().cadena());

const double totalEsperado =
(cantidad_A1_P1 + cantidad_A1_P2) * articulo1.precio();
chk_incl_str(sPedidos, toEuros(totalEsperado));
}
FCT_TEST_END();

FCT_TEST_BGN(Articulo---Pedido - mostrar detalle pedidos) {
ostringstream os;
pAsocPedidoArticulo->mostrarDetallePedidos(os);
const string sDetalle { os.str() };

const double totalEsperado =
(cantidad_A1_P1 + cantidad_A1_P2) * articulo1.precio()
+ cantidad_A2_P2 * articulo2.precio();
Expand All @@ -390,14 +390,14 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_informes) {
la cantidad es 1, ' 1' a final de línea, '1 ' a principio de
línea, o ' 1 ' valen, pero no '123', por ejemplo.
*/
const string sRegexPrefijo { "€[[:space:]]+" }; // "(€[[:space:]]|^)";
const string sRegexPrefijo { "€[[:space:]]+" }; // "(€[[:space:]]|^)";
const string sRegexSufijo { "([[:space:]]|$)" };
#ifndef CPP11REGEX
const string
const string
sRegexA1P1(sRegexPrefijo + toString(cantidad_A1_P1) + sRegexSufijo),
sRegexA1P2(sRegexPrefijo + toString(cantidad_A1_P2) + sRegexSufijo),
sRegexA2P2(sRegexPrefijo + toString(cantidad_A2_P2) + sRegexSufijo);
const regoff_t
const regoff_t
posCantidad_A1_P1 = find_regex(sRegexA1P1.c_str(), sDetalle.c_str()),
posCantidad_A1_P2 = find_regex(sRegexA1P2.c_str(), sDetalle.c_str()),
posCantidad_A2_P2 = find_regex(sRegexA2P2.c_str(), sDetalle.c_str());
Expand All @@ -424,7 +424,7 @@ FCTMF_FIXTURE_SUITE_BGN(test_p3_informes) {
#endif
}
FCT_TEST_END();

FCT_TEST_BGN(Pedido---Usuario - pedidos de un usuario) {
const auto& pedidosU2 = pAsocUsuarioPedido->pedidos(*pU2);
if (pedidosU2.size() == 1)
Expand Down
3 changes: 0 additions & 3 deletions build.sh

This file was deleted.

0 comments on commit 350b228

Please sign in to comment.