Buffer NEW

Buffer: NEW
Bytes: 1363
Lines: 36
SHA256: 349230a989275da6e0c6fc609eefe6c6d5accb95a01109add9285eb3a3e58705

Clear Use as NEW Use as CONTENT Use as patch payload Save to file

Clone: clone->A clone->B clone->PATCH clone->SCRATCH

Preview

import unittest

from relay_complex_math import InvoiceLine, calculate_invoice


class InvoiceTests(unittest.TestCase):
    def test_basic_tax(self):
        result = calculate_invoice([InvoiceLine(10.0, 2), InvoiceLine(5.0)], tax_pct=10)
        self.assertEqual(result["subtotal"], 25.0)
        self.assertEqual(result["tax"], 2.5)
        self.assertEqual(result["total"], 27.5)

    def test_discount_applies_before_tax(self):
        result = calculate_invoice([InvoiceLine(100.0)], discount_pct=20, tax_pct=10)
        self.assertEqual(result["discount"], 20.0)
        self.assertEqual(result["taxable"], 80.0)
        self.assertEqual(result["tax"], 8.0)
        self.assertEqual(result["total"], 88.0)

    def test_multiple_lines(self):
        result = calculate_invoice([InvoiceLine(12.5, 2), InvoiceLine(7.25, 3)], discount_pct=10, tax_pct=6)
        self.assertEqual(result["subtotal"], 46.75)
        self.assertEqual(result["line_count"], 2)
        self.assertEqual(result["taxable"], 42.08)

    def test_validation(self):
        with self.assertRaises(ValueError):
            calculate_invoice([InvoiceLine(1)], discount_pct=101)
        with self.assertRaises(ValueError):
            InvoiceLine(-1).total()
        with self.assertRaises(ValueError):
            InvoiceLine(1, 0).total()


if __name__ == "__main__":
    unittest.main()

All Buffers Project Home