
"""
Implementation file for Mutation Score tests.

Generated by Chat-GPT
"""


class Account:
    def __init__(self, balance=0.0, interest_rate=0.01):
        self.balance = balance
        self.interest_rate = interest_rate
        self.frozen = False

    def deposit(self, amount):
        if self.frozen:
            raise Exception("Account is frozen.")
        if amount <= 0:
            raise ValueError("Deposit amount must be positive.")
        self.balance += amount

    def withdraw(self, amount):
        if self.frozen:
            raise Exception("Account is frozen.")
        if amount <= 0:
            raise ValueError("Withdrawal amount must be positive.")
        if amount > self.balance:
            raise ValueError("Insufficient funds.")
        self.balance -= amount

    def transfer_to(self, target, amount):
        if self.frozen or target.frozen:
            raise Exception("One of the accounts is frozen.")
        if amount > 0 and self.balance >= amount:
            self.balance -= amount
            target.balance += amount

    def apply_interest(self):
        if self.frozen:
            raise Exception("Account is frozen.")
        self.balance += self.balance * self.interest_rate

    def freeze(self):
        self.frozen = True

    def unfreeze(self):
        self.frozen = False

    def get_balance(self):
        return self.balance
