Skip to content

MoscowSquad/Income-Flow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

enum class TransactionType { INCOME, EXPENSE }

data class Transaction( val description: String, val amount: Double, val type: TransactionType )

fun calculateBalance(transactions: List): Double { return transactions.sumOf { if (it.type == TransactionType.INCOME) it.amount else -it.amount } }

// === Test Cases ===

fun testBalanceWithOnlyIncome() { val transactions = listOf( Transaction("Salary", 5000.0, TransactionType.INCOME), Transaction("Bonus", 1500.0, TransactionType.INCOME) ) val balance = calculateBalance(transactions) println(" Test: Only Income → Expected: 6500.0, Got: $balance") }

fun testBalanceWithIncomeAndExpense() { val transactions = listOf( Transaction("Salary", 5000.0, TransactionType.INCOME), Transaction("Rent", 2000.0, TransactionType.EXPENSE), Transaction("Food", 500.0, TransactionType.EXPENSE) ) val balance = calculateBalance(transactions) println(" Test: Income & Expense → Expected: 2500.0, Got: $balance") }

fun testBalanceWithNoTransactions() { val transactions = emptyList() val balance = calculateBalance(transactions) println(" Test: No Transactions → Expected: 0.0, Got: $balance") }

// === CLI Test Menu ===

fun showTestMenu() { while (true) { println("\n========== Test CLI ==========") println("1. Test Balance with Only Income") println("2. Test Balance with Income & Expenses") println("3. Test Balance with No Transactions") println("4. Exit Test CLI") print("Choose a test to run: ")

    when (readln()) {
        "1" -> testBalanceWithOnlyIncome()
        "2" -> testBalanceWithIncomeAndExpense()
        "3" -> testBalanceWithNoTransactions()
        "4" -> {
            println("Exiting Test CLI...")
            return
        }
        else -> println(" Invalid option. Try again.")
    }
}

}

// الدالة الأساسيه fun main() { showTestMenu() }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published