{
  "metadata": {
    "calculator": "CalcWise MACRS Depreciation Calculator",
    "taxYear": 2026,
    "totalTestCount": 58,
    "generationDate": "2026-07-20",
    "description": "All test cases for the CalcWise MACRS Depreciation Calculator."
  },
  "categories": [
    {
      "category": "rate-table",
      "cases": [
        {
          "id": "HY-3-match",
          "name": "HY 3-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (3-year HY)",
          "input": {
            "recoveryPeriod": 3,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              33.33,
              44.45,
              14.81,
              7.41
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-3-sum",
          "name": "HY 3-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (3-year HY)",
          "input": {
            "recoveryPeriod": 3,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "HY-5-match",
          "name": "HY 5-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (5-year HY)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              20,
              32,
              19.2,
              11.52,
              11.52,
              5.76
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-5-sum",
          "name": "HY 5-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (5-year HY)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "HY-7-match",
          "name": "HY 7-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (7-year HY)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              14.29,
              24.49,
              17.49,
              12.49,
              8.93,
              8.92,
              8.93,
              4.46
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-7-sum",
          "name": "HY 7-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (7-year HY)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "HY-10-match",
          "name": "HY 10-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (10-year HY)",
          "input": {
            "recoveryPeriod": 10,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              10,
              18,
              14.4,
              11.52,
              9.22,
              7.37,
              6.55,
              6.55,
              6.56,
              6.55,
              3.28
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-10-sum",
          "name": "HY 10-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (10-year HY)",
          "input": {
            "recoveryPeriod": 10,
            "method": "200DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "HY-15-match",
          "name": "HY 15-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (15-year HY)",
          "input": {
            "recoveryPeriod": 15,
            "method": "150DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              5,
              9.5,
              8.55,
              7.7,
              6.93,
              6.23,
              5.9,
              5.9,
              5.91,
              5.9,
              5.91,
              5.9,
              5.91,
              5.9,
              5.91,
              2.95
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-15-sum",
          "name": "HY 15-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (15-year HY)",
          "input": {
            "recoveryPeriod": 15,
            "method": "150DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "HY-20-match",
          "name": "HY 20-year matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (20-year HY)",
          "input": {
            "recoveryPeriod": 20,
            "method": "150DB",
            "convention": "HY"
          },
          "expected": {
            "ratesPct": [
              3.75,
              7.219,
              6.677,
              6.177,
              5.713,
              5.285,
              4.888,
              4.522,
              4.462,
              4.461,
              4.462,
              4.461,
              4.462,
              4.461,
              4.462,
              4.461,
              4.462,
              4.461,
              4.462,
              4.461,
              2.231
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "HY-20-sum",
          "name": "HY 20-year sums to 100%",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-1 (20-year HY)",
          "input": {
            "recoveryPeriod": 20,
            "method": "150DB",
            "convention": "HY"
          },
          "expected": {
            "sumPct": 100
          },
          "tolerance": 0.02
        },
        {
          "id": "MQ-5-Q1-match",
          "name": "MQ 5-year Q1 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-2 (5-year MQ Q1)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 1
          },
          "expected": {
            "ratesPct": [
              35,
              26,
              15.6,
              11.01,
              11.01,
              1.38
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-5-Q2-match",
          "name": "MQ 5-year Q2 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-3 (5-year MQ Q2)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 2
          },
          "expected": {
            "ratesPct": [
              25,
              30,
              18,
              11.37,
              11.37,
              4.26
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-5-Q3-match",
          "name": "MQ 5-year Q3 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-4 (5-year MQ Q3)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 3
          },
          "expected": {
            "ratesPct": [
              15,
              34,
              20.4,
              12.24,
              11.3,
              7.06
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-5-Q4-match",
          "name": "MQ 5-year Q4 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-5 (5-year MQ Q4)",
          "input": {
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 4
          },
          "expected": {
            "ratesPct": [
              5,
              38,
              22.8,
              13.68,
              10.94,
              9.58
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-7-Q1-match",
          "name": "MQ 7-year Q1 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-2 (7-year MQ Q1)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 1
          },
          "expected": {
            "ratesPct": [
              25,
              21.43,
              15.31,
              10.93,
              8.75,
              8.74,
              8.75,
              1.09
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-7-Q2-match",
          "name": "MQ 7-year Q2 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-3 (7-year MQ Q2)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 2
          },
          "expected": {
            "ratesPct": [
              17.85,
              23.47,
              16.76,
              11.97,
              8.87,
              8.87,
              8.87,
              3.34
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-7-Q3-match",
          "name": "MQ 7-year Q3 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-4 (7-year MQ Q3)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 3
          },
          "expected": {
            "ratesPct": [
              10.71,
              25.51,
              18.22,
              13.02,
              9.3,
              8.85,
              8.86,
              5.53
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        },
        {
          "id": "MQ-7-Q4-match",
          "name": "MQ 7-year Q4 matches IRS table",
          "category": "rate-table",
          "source": "IRS Pub. 946 Appendix A Table A-5 (7-year MQ Q4)",
          "input": {
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "MQ",
            "quarter": 4
          },
          "expected": {
            "ratesPct": [
              3.57,
              27.55,
              19.68,
              14.06,
              10.04,
              8.73,
              8.73,
              7.64
            ],
            "compare": "all except final year"
          },
          "tolerance": 0.011
        }
      ]
    },
    {
      "category": "order-of-operations",
      "cases": [
        {
          "id": "TC2-Y1",
          "name": "TC2 7-year $50k Year 1 MACRS",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-1 (7-year HY Year 1 14.29%)",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "firstYearMacrs": 7145
          },
          "tolerance": 0.51
        },
        {
          "id": "TC2-RECOVERY",
          "name": "TC2 full basis recovery",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 MACRS recovery tables (full recovery over life)",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "finalRemaining": 0
          },
          "tolerance": 0.5
        },
        {
          "id": "TC1-Y1",
          "name": "TC1 5-year $10k Year 1 MACRS",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-1 (5-year HY Year 1 20%)",
          "input": {
            "taxYear": 2024,
            "cost": 10000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-06-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "firstYearMacrs": 2000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC1-Y2",
          "name": "TC1 5-year $10k Year 2 MACRS",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-1 (5-year HY Year 2 32%)",
          "input": {
            "taxYear": 2024,
            "cost": 10000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-06-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "year2Depreciation": 3200
          },
          "tolerance": 0.51
        },
        {
          "id": "TC3-Y1",
          "name": "TC3 7-year MQ Q4 Year 1",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-5 (7-year MQ Q4 Year 1 3.57%)",
          "input": {
            "taxYear": 2024,
            "cost": 100000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-11-15",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "MQ"
          },
          "expected": {
            "firstYearMacrs": 3570
          },
          "tolerance": 0.51
        },
        {
          "id": "TC4-MACRS",
          "name": "TC4 $20k §179 then MACRS Year 1",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 + Form 4562 instructions (order: §179 then MACRS)",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "section179": 20000
          },
          "expected": {
            "firstYearMacrs": 4287
          },
          "tolerance": 0.51
        },
        {
          "id": "TC4-TOTAL",
          "name": "TC4 first-year total with §179",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 + Form 4562 instructions",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "section179": 20000
          },
          "expected": {
            "firstYearTotal": 24287
          },
          "tolerance": 0.51
        },
        {
          "id": "TC5-BONUS",
          "name": "TC5 bonus amount",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 special depreciation allowance ordering",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 60
          },
          "expected": {
            "bonusUsed": 30000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC5-TOTAL",
          "name": "TC5 first-year total with bonus",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 + Table A-1 rate on post-bonus basis",
          "input": {
            "taxYear": 2024,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 60
          },
          "expected": {
            "firstYearTotal": 32858
          },
          "tolerance": 0.51
        },
        {
          "id": "TC6-BASIS",
          "name": "TC6 business-use basis reduction",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 business-use basis rules",
          "input": {
            "taxYear": 2024,
            "cost": 20000,
            "businessUsePct": 50,
            "placedInServiceDate": "2024-06-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "depreciableBasis": 10000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC6-Y1",
          "name": "TC6 Year 1 on reduced basis",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-1 (5-year HY Year 1 20%)",
          "input": {
            "taxYear": 2024,
            "cost": 20000,
            "businessUsePct": 50,
            "placedInServiceDate": "2024-06-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto"
          },
          "expected": {
            "firstYearMacrs": 2000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC7-MQ-DETECT",
          "name": "TC7 auto mid-quarter detection",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 mid-quarter 40% test",
          "input": {
            "taxYear": 2024,
            "cost": 40000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-11-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto",
            "midQuarter": {
              "totalYearBasis": 100000,
              "q4Basis": 50000
            }
          },
          "expected": {
            "midQuarterApplies": true,
            "convention": "MQ"
          },
          "tolerance": 0
        },
        {
          "id": "TC7-Y1",
          "name": "TC7 5-year MQ Q4 Year 1",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 Appendix A Table A-5 (5-year MQ Q4 Year 1 5%)",
          "input": {
            "taxYear": 2024,
            "cost": 40000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-11-01",
            "recoveryPeriod": 5,
            "method": "200DB",
            "convention": "auto",
            "midQuarter": {
              "totalYearBasis": 100000,
              "q4Basis": 50000
            }
          },
          "expected": {
            "firstYearMacrs": 2000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC8-Y1",
          "name": "TC8 39-year MM June Year 1",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 nonresidential real property (39-year SL, mid-month)",
          "input": {
            "taxYear": 2024,
            "cost": 390000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-06-15",
            "recoveryPeriod": 39,
            "method": "SL",
            "convention": "MM",
            "real": true
          },
          "expected": {
            "firstYearMacrs": 5416.67
          },
          "tolerance": 1.5
        },
        {
          "id": "TC8-MM",
          "name": "TC8 convention resolves to MM",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 mid-month convention for real property",
          "input": {
            "taxYear": 2024,
            "cost": 390000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-06-15",
            "recoveryPeriod": 39,
            "method": "SL",
            "convention": "MM",
            "real": true
          },
          "expected": {
            "convention": "MM"
          },
          "tolerance": 0
        },
        {
          "id": "TC10-BASIS",
          "name": "TC10 stacked basis after §179 and bonus",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 + Form 4562 instructions (order: §179 -> bonus -> MACRS)",
          "input": {
            "taxYear": 2024,
            "cost": 100000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "section179": 50000,
            "bonusEnabled": true,
            "bonusPct": 60
          },
          "expected": {
            "macrsBasis": 20000
          },
          "tolerance": 0.51
        },
        {
          "id": "TC10-TOTAL",
          "name": "TC10 first-year total",
          "category": "order-of-operations",
          "source": "IRS Pub. 946 + Form 4562 instructions",
          "input": {
            "taxYear": 2024,
            "cost": 100000,
            "businessUsePct": 100,
            "placedInServiceDate": "2024-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "section179": 50000,
            "bonusEnabled": true,
            "bonusPct": 60
          },
          "expected": {
            "firstYearTotal": 82858
          },
          "tolerance": 0.51
        }
      ]
    },
    {
      "category": "validation",
      "cases": [
        {
          "id": "TC9-COST",
          "name": "Invalid cost error key present",
          "category": "validation",
          "source": "Form 4562 instructions (positive depreciable cost required)",
          "input": {
            "cost": 0,
            "businessUsePct": 120,
            "placedInServiceDate": "",
            "recoveryPeriod": 7,
            "section179": 999999
          },
          "expected": {
            "errors.cost": true
          },
          "tolerance": 0
        },
        {
          "id": "TC9-BIZUSE",
          "name": "Invalid business-use error key present",
          "category": "validation",
          "source": "Form 4562 instructions (business-use percentage bounded 0-100)",
          "input": {
            "cost": 0,
            "businessUsePct": 120,
            "placedInServiceDate": "",
            "recoveryPeriod": 7,
            "section179": 999999
          },
          "expected": {
            "errors.businessUsePct": true
          },
          "tolerance": 0
        },
        {
          "id": "TC9-179",
          "name": "Invalid §179-over-basis error key present",
          "category": "validation",
          "source": "IRS Pub. 946 and Form 4562 instructions (§179 cannot exceed eligible basis)",
          "input": {
            "cost": 0,
            "businessUsePct": 120,
            "placedInServiceDate": "",
            "recoveryPeriod": 7,
            "section179": 999999
          },
          "expected": {
            "errors.section179": true
          },
          "tolerance": 0
        },
        {
          "id": "TC9-VALID",
          "name": "Overall validation is false",
          "category": "validation",
          "source": "Form 4562 data requirements reflected in validation rules",
          "input": {
            "cost": 0,
            "businessUsePct": 120,
            "placedInServiceDate": "",
            "recoveryPeriod": 7,
            "section179": 999999
          },
          "expected": {
            "valid": false
          },
          "tolerance": 0
        }
      ]
    },
    {
      "category": "year-specific",
      "cases": [
        {
          "id": "Y2026-179MAX",
          "name": "2026 §179 limit",
          "category": "year-specific",
          "source": "Rev. Proc. 2025-32; IRS Pub. 946 What's New for 2026",
          "input": {
            "taxYear": 2026
          },
          "expected": {
            "TAX_YEARS.2026.section179Max": 2560000
          },
          "tolerance": 0
        },
        {
          "id": "Y2026-PHASE",
          "name": "2026 §179 phase-out",
          "category": "year-specific",
          "source": "Rev. Proc. 2025-32; IRS Pub. 946 What's New for 2026",
          "input": {
            "taxYear": 2026
          },
          "expected": {
            "TAX_YEARS.2026.section179Phaseout": 4090000
          },
          "tolerance": 0
        },
        {
          "id": "Y2026-SUV",
          "name": "2026 §179 SUV cap",
          "category": "year-specific",
          "source": "Rev. Proc. 2025-32; IRS Pub. 946 What's New for 2026",
          "input": {
            "taxYear": 2026
          },
          "expected": {
            "TAX_YEARS.2026.section179SuvCap": 32000
          },
          "tolerance": 0
        },
        {
          "id": "Y2026-BONUS",
          "name": "2026 default bonus 100%",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2026",
          "input": {
            "taxYear": 2026
          },
          "expected": {
            "TAX_YEARS.2026.bonusDefaultPct": 100
          },
          "tolerance": 0
        },
        {
          "id": "Y2026-VERIFY",
          "name": "2026 verify flag is false",
          "category": "year-specific",
          "source": "Rev. Proc. 2025-32 + IRS Pub. 946 2026 verification completed",
          "input": {
            "taxYear": 2026
          },
          "expected": {
            "TAX_YEARS.2026.verify": false
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-179MAX",
          "name": "2025 §179 limit",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2025; OBBBA (P.L. 119-21)",
          "input": {
            "taxYear": 2025
          },
          "expected": {
            "TAX_YEARS.2025.section179Max": 2500000
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-PHASE",
          "name": "2025 §179 phase-out",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2025; OBBBA (P.L. 119-21)",
          "input": {
            "taxYear": 2025
          },
          "expected": {
            "TAX_YEARS.2025.section179Phaseout": 4000000
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-SUV",
          "name": "2025 §179 SUV cap",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2025; OBBBA (P.L. 119-21)",
          "input": {
            "taxYear": 2025
          },
          "expected": {
            "TAX_YEARS.2025.section179SuvCap": 31300
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-BONUS",
          "name": "2025 default bonus 100%",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2025; OBBBA (P.L. 119-21)",
          "input": {
            "taxYear": 2025
          },
          "expected": {
            "TAX_YEARS.2025.bonusDefaultPct": 100
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-VERIFY",
          "name": "2025 verify flag is false",
          "category": "year-specific",
          "source": "IRS Pub. 946 What's New for 2025; OBBBA (P.L. 119-21)",
          "input": {
            "taxYear": 2025
          },
          "expected": {
            "TAX_YEARS.2025.verify": false
          },
          "tolerance": 0
        },
        {
          "id": "DEFAULT-YEAR",
          "name": "Default tax year is 2026",
          "category": "year-specific",
          "source": "Derived from latest verified IRS year figures (2026)",
          "input": {},
          "expected": {
            "DEFAULT_TAX_YEAR": 2026
          },
          "tolerance": 0
        },
        {
          "id": "Y2026-179-WARN",
          "name": "2026 over-limit §179 warning",
          "category": "year-specific",
          "source": "IRC §179 annual limit as published in Rev. Proc. 2025-32 and Pub. 946",
          "input": {
            "taxYear": 2026,
            "cost": 3000000,
            "businessUsePct": 100,
            "placedInServiceDate": "2026-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "section179": 2560001
          },
          "expected": {
            "warningIncludes": [
              "2,560,000"
            ]
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-PREJAN20-WARN",
          "name": "2025 pre-Jan-20 bonus boundary warning",
          "category": "year-specific",
          "source": "OBBBA (P.L. 119-21) effective date boundary",
          "input": {
            "taxYear": 2025,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2025-01-10",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 100
          },
          "expected": {
            "warningIncludes": [
              "40%",
              "Jan"
            ]
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-POSTJAN19-NOWARN",
          "name": "2025 post-Jan-19 no boundary warning",
          "category": "year-specific",
          "source": "OBBBA (P.L. 119-21) effective date boundary",
          "input": {
            "taxYear": 2025,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2025-03-01",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 100
          },
          "expected": {
            "warningExcludes": [
              "40%"
            ]
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-JAN19-WARN",
          "name": "2025 Jan 19 warning",
          "category": "year-specific",
          "source": "OBBBA (P.L. 119-21) effective date boundary",
          "input": {
            "taxYear": 2025,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2025-01-19",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 100
          },
          "expected": {
            "warningIncludes": [
              "40%"
            ]
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-JAN20-NOWARN",
          "name": "2025 Jan 20 no warning",
          "category": "year-specific",
          "source": "OBBBA (P.L. 119-21) effective date boundary",
          "input": {
            "taxYear": 2025,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2025-01-20",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 100
          },
          "expected": {
            "warningExcludes": [
              "40%"
            ]
          },
          "tolerance": 0
        },
        {
          "id": "Y2025-OVERRIDE40-WARN",
          "name": "2025 pre-Jan-20 overridden 40% warning text",
          "category": "year-specific",
          "source": "OBBBA (P.L. 119-21) effective date boundary",
          "input": {
            "taxYear": 2025,
            "cost": 50000,
            "businessUsePct": 100,
            "placedInServiceDate": "2025-01-10",
            "recoveryPeriod": 7,
            "method": "200DB",
            "convention": "auto",
            "bonusEnabled": true,
            "bonusPct": 40
          },
          "expected": {
            "warningIncludes": [
              "40% shown"
            ]
          },
          "tolerance": 0
        }
      ]
    }
  ]
}
