import { describe, expect, it } from 'vitest';
import { detectTier, isWebGPUAvailable } from '~/engine/adapter';
import type { PerfTier } from '~/engine/types';
describe('isWebGPUAvailable', () => {
it('returns false when navigator.gpu is undefined', () => {
const fakeNav = {} as Navigator;
expect(isWebGPUAvailable(fakeNav)).toBe(false);
});
it('returns true when navigator.gpu exists', () => {
const fakeNav = { gpu: {} } as Navigator;
expect(isWebGPUAvailable(fakeNav)).toBe(true);
});
});
describe('detectTier', () => {
it('returns "minimum" for fallback adapter', () => {
const adapter = {
info: { isFallbackAdapter: true, architecture: '' },
} as unknown as GPUAdapter;
expect(detectTier(adapter, false)).toBe<PerfTier>('minimum');
});
it('returns "mobile" when isMobileUA is true', () => {
const adapter = {
info: { isFallbackAdapter: false, architecture: '' },
} as unknown as GPUAdapter;
expect(detectTier(adapter, true)).toBe<PerfTier>('mobile');
});
it('returns "desktop" when not mobile and not fallback', () => {
const adapter = {
info: { isFallbackAdapter: false, architecture: '' },
} as unknown as GPUAdapter;
expect(detectTier(adapter, false)).toBe<PerfTier>('desktop');
});
});