import { describe, expect, it } from 'vitest'; const add = (a: number, b: number): number => a + b; describe('add', () => { describe('happy paths', () => { it('adds two positive numbers', () => { // Arrange const a = 2; const b = 3; // Act const result = add(a, b); // Assert expect(result).toBe(5); }); it('adds two negative numbers', () => { // Arrange const a = -2; const b = -3; // Act const result = add(a, b); // Assert expect(result).toBe(-5); }); it('adds numbers with opposite signs', () => { // Arrange const a = -7; const b = 10; // Act const result = add(a, b); // Assert expect(result).toBe(3); }); it('adds decimal numbers', () => { // Arrange const a = 0.1; const b = 0.2; // Act const result = add(a, b); // Assert expect(result).toBeCloseTo(0.3); }); }); describe('edge cases', () => { it('returns zero when both operands are zero', () => { // Arrange const a = 0; const b = 0; // Act const result = add(a, b); // Assert expect(result).toBe(0); }); it('preserves the other operand when adding zero', () => { // Arrange const a = 42; const b = 0; // Act const result = add(a, b); // Assert expect(result).toBe(42); }); it('returns Infinity when the sum exceeds Number.MAX_VALUE', () => { // Arrange const a = Number.MAX_VALUE; const b = Number.MAX_VALUE; // Act const result = add(a, b); // Assert expect(result).toBe(Infinity); }); it('returns NaN when an operand is NaN', () => { // Arrange const a = Number.NaN; const b = 1; // Act const result = add(a, b); // Assert expect(result).toBeNaN(); }); it('handles positive and negative infinity', ()
Unit test writer
Input
- Code
- function add(a, b) { return a + b; }
Sample output
Made on 27 October 2026