{
  "metadata": {
    "calculator": "Section 179 Deduction Calculator",
    "taxYear": 2026,
    "totalTests": 10,
    "generationDate": "2026-07-20",
    "description": "All test cases for the CalcWise Section 179 Deduction Calculator."
  },
  "testCases": [
    {
      "id": "A1",
      "name": "Pub. 946 worked example: $39,000 7-yr, $24,000 §179, no bonus",
      "category": "order-of-operations",
      "source": "Pub. 946 ch. 3 'Depreciating the remaining cost'",
      "input": { "taxYear": 2026, "cost": 39000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 24000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "depreciableBasis": 39000, "section179Allowed": 24000, "basisAfterSection179": 15000, "bonusUsed": 0, "macrsBasis": 15000, "firstYearMacrs": 2143.5, "firstYearTotal": 26143.5 },
      "tolerance": 1.0
    },
    {
      "id": "A2",
      "name": "Pub. 946 phase-out worked example: Jane Ash, $4,050,000 at 2025 figures",
      "category": "order-of-operations",
      "source": "Pub. 946 ch. 2 'Costs Exceeding $4,000,000'",
      "input": { "taxYear": 2025, "cost": 4050000, "businessUsePct": 100, "placedInServiceDate": "2025-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 2500000, "totalSection179PropertyPlacedInService": 4050000, "businessTaxableIncome": 5000000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "phaseOutReduction": 50000, "reducedLimit": 2450000 },
      "tolerance": 0.5
    },
    {
      "id": "A3",
      "name": "Full phase-out: $6,650,000 total at 2026 figures",
      "category": "order-of-operations",
      "source": "Pub. 946 'If the cost of your section 179 property... is $X or more, you cannot take a section 179 deduction'",
      "input": { "taxYear": 2026, "cost": 6650000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 100000, "totalSection179PropertyPlacedInService": 6650000, "businessTaxableIncome": 10000000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "reducedLimit": 0, "section179Allowed": 0 },
      "tolerance": 0.5
    },
    {
      "id": "A4",
      "name": "Business-income limit binds: $100,000 elected, $40,000 income",
      "category": "order-of-operations",
      "source": "Form 4562 instructions Line 11-13 mechanics",
      "input": { "taxYear": 2026, "cost": 150000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 100000, "businessTaxableIncome": 40000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "tentativeSection179": 100000, "section179Allowed": 40000, "carryforward": 60000 },
      "tolerance": 0.5
    },
    {
      "id": "A5",
      "name": "SUV sublimit: $80,000 elected on heavy SUV, 2026 cap $32,000",
      "category": "order-of-operations",
      "source": "26 U.S.C. §179(b)(5); Pub. 946 'Sport Utility and Certain Other Vehicles'",
      "input": { "taxYear": 2026, "cost": 90000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 5, "method": "200DB", "convention": "auto", "section179Elected": 80000, "isHeavySuv": true, "businessTaxableIncome": 200000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "section179Allowed": 32000, "suvCapApplied": 48000 },
      "tolerance": 0.5
    },
    {
      "id": "A6",
      "name": "§179 + 100% bonus: $100,000 cost, $30,000 §179, 100% bonus on remainder",
      "category": "order-of-operations",
      "source": "Pub. 946 ch. 3 ordering; 2026 100% bonus rate",
      "input": { "taxYear": 2026, "cost": 100000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 30000, "businessTaxableIncome": 200000, "bonusEnabled": true, "bonusPct": 100 },
      "expected": { "section179Allowed": 30000, "basisAfterSection179": 70000, "bonusUsed": 70000, "macrsBasis": 0, "firstYearTotal": 100000 },
      "tolerance": 0.5
    },
    {
      "id": "B3",
      "name": "50% business use boundary (§179 disallowed at exactly 50%)",
      "category": "validation",
      "source": "Pub. 946 'Partial business use': 'more than 50%' is the threshold",
      "input": { "taxYear": 2026, "cost": 50000, "businessUsePct": 50, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 20000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "section179Allowed": 0, "depreciableBasis": 25000 },
      "tolerance": 0.5
    },
    {
      "id": "B5",
      "name": "Carryforward-in only, no new election",
      "category": "order-of-operations",
      "source": "Form 4562 Line 10 mechanics",
      "input": { "taxYear": 2026, "cost": 50000, "businessUsePct": 100, "placedInServiceDate": "2026-03-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 0, "priorYearCarryforward": 50000, "businessTaxableIncome": 100000, "bonusEnabled": false, "bonusPct": 0 },
      "expected": { "tentativeSection179": 50000, "section179Allowed": 50000 },
      "tolerance": 0.5
    },
    {
      "id": "F1",
      "name": "2026 year-specific figures tripwire",
      "category": "year-specific",
      "source": "Pub. 946 'What's New for 2026'; Rev. Proc. 2025-32 (2025-45 I.R.B. 695)",
      "input": {},
      "expected": { "section179Max": 2560000, "section179Phaseout": 4090000, "section179SuvCap": 32000, "bonusDefaultPct": 100, "verify": false },
      "tolerance": 0
    },
    {
      "id": "G1",
      "name": "2025 Jan 1-19 bonus boundary warning",
      "category": "year-specific",
      "source": "IRS Topic 704; OBBBA Jan 19/20 2025 boundary",
      "input": { "taxYear": 2025, "cost": 50000, "businessUsePct": 100, "placedInServiceDate": "2025-01-15", "recoveryPeriod": 7, "method": "200DB", "convention": "auto", "section179Elected": 10000, "businessTaxableIncome": 100000, "bonusEnabled": true, "bonusPct": 100 },
      "expected": { "boundaryWarningFires": true },
      "tolerance": 0
    }
  ]
}
