diff --git a/P3/pedido.cpp b/P3/pedido.cpp index d37d0cf..b3c2d7a 100644 --- a/P3/pedido.cpp +++ b/P3/pedido.cpp @@ -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.º: "<numero()<< std::endl + <<" n.º: "<numero()<< std::endl << std::left << std::setw(13) << "Importe:" << std::fixed << std::setprecision(2) << pe.total() << " \u20AC"<< std::endl; diff --git a/Tests-auto/test-auto.hpp b/Tests-auto/test-auto.hpp index 61584f0..9945033 100644 --- a/Tests-auto/test-auto.hpp +++ b/Tests-auto/test-auto.hpp @@ -28,7 +28,7 @@ #include /** Lamentablemente, aún , 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 @@ -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 *********************/ @@ -102,7 +102,7 @@ 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); } @@ -110,7 +110,7 @@ inline bool operator ==(const Numero& a, const Numero& b) /** 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 { @@ -120,11 +120,11 @@ struct sin_separador : std::numpunct { }; /** - 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 -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())); @@ -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); diff --git a/Tests-auto/test-caso1-2-auto.cpp b/Tests-auto/test-caso1-2-auto.cpp index 6774245..ca6c703 100644 --- a/Tests-auto/test-caso1-2-auto.cpp +++ b/Tests-auto/test-caso1-2-auto.cpp @@ -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 @@ -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()); } @@ -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); @@ -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); diff --git a/Tests-auto/test-caso3-auto.cpp b/Tests-auto/test-caso3-auto.cpp index bfbd7b6..9da496f 100644 --- a/Tests-auto/test-caso3-auto.cpp +++ b/Tests-auto/test-caso3-auto.cpp @@ -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; @@ -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 }; @@ -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"); @@ -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 { @@ -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 { @@ -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 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(pPed.get())) == pU); @@ -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(pPed.get())) + pAsocPedidoArticulo->detalle(* const_cast(pPed.get())) }; if (itPed.size() == 2) { // Los artículos deben ir ordenados por código de referencia @@ -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); @@ -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); @@ -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) { @@ -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); @@ -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; @@ -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 @@ -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(); @@ -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()); @@ -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) diff --git a/build.sh b/build.sh deleted file mode 100755 index 459529e..0000000 --- a/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -cd P0/ -make test-auto && make test-P0-consola