def test_set_cell_not_allowed_because_of_non_existing_row():
    fitting_data = FittingData(COLUMNS)
    value = np.random.uniform(0, 10)
    column = np.random.choice(COLUMNS_NAMES)

    with pytest.raises(FittingDataSetError, match="^Record number 13 does not exists$"):
        fitting_data.set_cell(NUMBER_OF_RECORDS + 1, column, value)
def test_set_cell_not_allowed_because_of_non_existing_column():
    fitting_data = FittingData(COLUMNS)
    value = np.random.uniform(0, 10)

    with pytest.raises(
        FittingDataSetError, match='^Column name "I do not exist" does not exists$'
    ):
        fitting_data.set_cell(0, "I do not exist", value)
def test_set_cell_not_allowed_because_of_non_float_value():
    fitting_data = FittingData(COLUMNS)
    column = np.random.choice(COLUMNS_NAMES)
    record = np.random.randint(1, NUMBER_OF_RECORDS + 1)
    value = "I'm not a float"

    with pytest.raises(
        FittingDataSetError,
        match=(
            f'^The cell at record number:"{record}", column:"{column}"'
            f" has invalid syntax: I'm not a float.$"
        ),
    ):
        fitting_data.set_cell(record, column, value)
def test_set_cell_allowed(record_number, column_name):
    fitting_data = FittingData(deepcopy(COLUMNS))
    value = np.random.uniform(0, 10)
    fitting_data.set_cell(
        record_number=record_number,
        column_name=column_name,
        value=value,
    )

    for column in COLUMNS_NAMES:
        for i in range(NUMBER_OF_RECORDS):
            if column == column_name and i + 1 == record_number:
                assert fitting_data.data[column][i] == value, "New value was not set"
            else:
                assert (
                    fitting_data.data[column][i] == COLUMNS[column][i]
                ), "Data was change unexpectedly"