B3: Guia TDD

  1. Arregla cosetes de la pràctica anterior:
  2. Implementa les conversions de format amb un fake
  3. Adapta la llibreria libOpenOffice2Html amb la classe adaptadora ConversorHtml. Ho farem guiats pels següents tests unitaris. (TestsConversorHtml.cxx, que heu de crear vosaltres)
  4. Adapta la llibreria libOpenOffice2Pdf amb la classe adaptadora ConversorPdf. Els tests unitaris. (TestsConversorPdf.cxx) sòn anàlegs però és diferent la forma de fer-los fallar i passar-los. Coses que cal tenir en compte:
  5. Cal crear la classe GrupDeConversors que gestioni una llista de conversors. (composició polimòrfica múltiple). Afegirem conversors al grup de la següent manera:
    grupDeConversors.afegeix("html");
    grupDeConversors.afegeix("pdf_imprimible"); // Sense marca d'aigua 
    grupDeConversors.afegeix("pdf_marcat"); // amb marca d'aigua 
    D'aquesta manera ocultem els tipus concrets de conversors als seus clients. El grup de conversors defineix el seu propi mètode converteix que crida recursivament als del seus agregats. Els testos unitaris (TestGrupDeConversors.cxx) que cal fer segueixen l'esquema de les altres composició múltiple que vam fer, però, en un punt cal introduir el polimorfisme.
  6. Un cop tenim aquesta infraestructura muntada podem fer un refactoring per substituir la implementació fake que tenim a la facade (AmalgamaOnline). Li afegim al facade un membre GrupDeConversors, i des del constructor del facade li afegim els formats que abans traduiem amb el fake, tot hauria de seguir funcionant.
  7. Opcional: Passar el darrer test funcional: Fer que agafi els formats actius d'un fitxer de configuració passat com a paràmetre a un constructor alternatiu. Pista: Com les etiquetes de format son paraules (sense espais) aquest constructor alternatiu pot fer el parsing simplement amb:
    	std::ifstream config(configFilename.c_str());
    	std::string format;
    	while (config >> format)
    		// afegeix el format
    

Valid XHTML 1.0!