@Override
    public Macronutrient calculate(MacroCalculatorAttributes attributes) {
        if(attributes == null || attributes.requiredCalories() == null || attributes.bodyWeightInKg() == null || attributes.gender() == null) {
            return new Macronutrient(BigDecimal.valueOf(0), BigDecimal.valueOf(0), BigDecimal.valueOf(0), BigDecimal.valueOf(0));
        }
        BigDecimal totalProtein = calculateTotalProtein(attributes.bodyWeightInKg(), attributes.gender());
        BigDecimal totalFats = calculateTotalFats(attributes.requiredCalories());
        BigDecimal totalCarbohydrates = calculateCarbohydrates(attributes.requiredCalories(), totalProtein, totalFats);
        return new Macronutrient(attributes.requiredCalories(), totalProtein, totalFats, totalCarbohydrates);
    }
@Test
    void calculate_male() {
        MacroCalculatorAttributes macroCalculatorAttributes = new MacroCalculatorAttributes(
                BigDecimal.valueOf(2500), BigDecimal.valueOf(100), Gender.MALE);
        Macronutrient macronutrient = macroCalculator.calculate(macroCalculatorAttributes);

        assertAll("Need to be correct!",
                () -> assertEquals(BigDecimal.valueOf(2500), macronutrient.getCalories()),
                () -> assertEquals(BigDecimal.valueOf(220.0), macronutrient.getProteins()),
                () -> assertEquals(BigDecimal.valueOf(217.6), macronutrient.getCarbohydrates()),
                () -> assertEquals(BigDecimal.valueOf(83.3), macronutrient.getFats()));
    }