#include #include #include #include int main() { { Bureaucrat franck; std::cout << franck << std::endl; franck.incrementGrade(); std::cout << franck << std::endl; Bureaucrat alain("Alain"); std::cout << alain << std::endl; alain.incrementGrade(); std::cout << alain << std::endl; Bureaucrat james("James", 1); std::cout << james << std::endl; james.decrementGrade(); std::cout << james << std::endl; } std::cout << "================ Exceptions ================" << std::endl; { std::cout << "=== Decrement too low ===" << std::endl; try { Bureaucrat franckAlainJamesLeboeuf; std::cout << franckAlainJamesLeboeuf << std::endl; franckAlainJamesLeboeuf.decrementGrade(); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Increment too high ===" << std::endl; try { Bureaucrat franckAlainJamesLeboeuf("Franck Alain James Leboeuf", 1); std::cout << franckAlainJamesLeboeuf << std::endl; franckAlainJamesLeboeuf.incrementGrade(); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct too low ===" << std::endl; try { Bureaucrat franckAlainJamesLeboeuf("Franck Alain James Leboeuf", 151); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct too high ===" << std::endl; try { Bureaucrat franckAlainJamesLeboeuf("Franck Alain James Leboeuf", 0); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } } std::cout << "================================ Forms ================================" << std::endl; { Bureaucrat franck; Form vente; std::cout << vente << std::endl; vente.beSigned(franck); std::cout << vente << std::endl; Form vente2; std::cout << vente2 << std::endl; franck.signForm(vente2); std::cout << vente2 << std::endl; Bureaucrat alain("Alain"); Form contrat("Contrat"); std::cout << contrat << std::endl; contrat.beSigned(alain); std::cout << contrat << std::endl; Form contrat2("Contrat2"); std::cout << contrat2 << std::endl; alain.signForm(contrat2); std::cout << contrat2 << std::endl; Bureaucrat james("James", 1); Form achat("Achat", 1, 1); std::cout << achat << std::endl; achat.beSigned(james); std::cout << achat << std::endl; Form achat2("Achat2", 1, 1); std::cout << achat2 << std::endl; james.signForm(achat2); std::cout << achat2 << std::endl; Bureaucrat franckAlainJamesLeboeuf("Franck Alain James Leboeuf", 1); Form contratAlternance("Contrat Alternance", 1, 1); std::cout << contratAlternance << std::endl; contratAlternance.beSigned(franckAlainJamesLeboeuf); std::cout << contratAlternance << std::endl; contratAlternance.beSigned(franckAlainJamesLeboeuf); std::cout << contratAlternance << std::endl; Form contractAlternance2("Contrat Alternance 2", 1, 1); franckAlainJamesLeboeuf.signForm(contractAlternance2); std::cout << contractAlternance2 << std::endl; franckAlainJamesLeboeuf.signForm(contractAlternance2); std::cout << contractAlternance2 << std::endl; } std::cout << "================ Exceptions ================" << std::endl; { std::cout << "=== Construct both grade too low ===" << std::endl; try { Form vente("Vente", 151, 151); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct both grade too high ===" << std::endl; try { Form vente("Vente", 0, 0); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct to sign grade too low ===" << std::endl; try { Form vente("Vente", 151, 150); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct to sign grade too high ===" << std::endl; try { Form vente("Vente", 0, 0); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct to execute grade too low ===" << std::endl; try { Form vente("Vente", 150, 151); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Construct to execute grade too high ===" << std::endl; try { Form vente("Vente", 150, 0); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Grade to be signed too low ===" << std::endl; try { Bureaucrat franck; Form vente("Vente", 1, 1); vente.beSigned(franck); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } std::cout << "=== Grade to sign form too low ===" << std::endl; try { Bureaucrat franck; Form vente("Vente", 1, 1); franck.signForm(vente); } catch (const std::exception& exception) { std::cout << exception.what() << std::endl; } } }