import { describe, it, expect } from 'vitest';
import { div } from './0x04_DIV.js';
describe('DIV (0x04)', () => {
it('divides two numbers', () => {
const frame = createFrame([10n, 2n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([5n]);
});
it('truncates remainder', () => {
const frame = createFrame([10n, 3n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([3n]);
});
it('handles division by zero', () => {
const frame = createFrame([42n, 0n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([0n]);
});
it('handles zero divided by zero', () => {
const frame = createFrame([0n, 0n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([0n]);
});
it('handles division by one', () => {
const frame = createFrame([42n, 1n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([42n]);
});
it('handles self-division', () => {
const frame = createFrame([42n, 42n]);
expect(div(frame)).toBeNull();
expect(frame.stack).toEqual([1n]);
});
it('consumes correct gas (5)', () => {
const frame = createFrame([10n, 2n], 100n);
expect(div(frame)).toBeNull();
expect(frame.gasRemaining).toBe(95n);
});
});