All files / patterns/money/src money.ts

100% Statements 16/16
100% Branches 2/2
100% Functions 11/11
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                              2x         25x 25x       15x       2x       2x   2x       2x   2x       2x   2x       1x       1x       2x       1x       2x      
import { CurrencyInterface } from "./currency";
 
export interface MoneyInterface {
    getAmount(): number;
    getCurrency(): CurrencyInterface;
    add(money: MoneyInterface): void;
    substract(money: MoneyInterface): void;
    multiply(multiplier: number): void;
    isEqualTo(money: MoneyInterface): boolean;
    greaterThan(money: MoneyInterface): boolean;
    greaterOrEqualThan(money: MoneyInterface): boolean;
    lowerThan(money: MoneyInterface): boolean;
    lowerOrEqualThan(money: MoneyInterface): boolean;
}
 
export class Money implements MoneyInterface {
    protected amount: number;
    protected currency: CurrencyInterface;
 
    public constructor(amount: number, currency: CurrencyInterface) {
        this.amount = amount;
        this.currency = currency;
    }
 
    public getAmount(): number {
        return this.amount;
    }
 
    public getCurrency(): CurrencyInterface {
        return this.currency;
    }
 
    public add(money: MoneyInterface): number {
        this.amount += money.getAmount();
 
        return this.amount;
    }
 
    public substract(money: MoneyInterface): number {
        this.amount -= money.getAmount();
 
        return this.amount;
    }
 
    public multiply(multiplier: number): number {
        this.amount *= multiplier;
 
        return this.amount;
    }
 
    public isEqualTo(money: MoneyInterface): boolean {
        return this.amount === money.getAmount() && this.currency === money.getCurrency();
    }
 
    public greaterThan(money: MoneyInterface): boolean {
        return this.amount > money.getAmount();
    }
 
    public greaterOrEqualThan(money: MoneyInterface): boolean {
        return this.amount >= money.getAmount();
    }
 
    public lowerThan(money: MoneyInterface): boolean {
        return this.amount < money.getAmount();
    }
 
    public lowerOrEqualThan(money: MoneyInterface): boolean {
        return this.amount <= money.getAmount();
    }
}