diff --git a/app/test/result.test.ts b/app/test/result.test.ts new file mode 100644 index 0000000..22a0f1e --- /dev/null +++ b/app/test/result.test.ts @@ -0,0 +1,39 @@ +import { describe, it, expect } from 'vitest'; +import { Result } from '../src/lib/utilities'; + +describe('Result', () => { + it('should create a success result correctly', () => { + const successValue = "Success value"; + const result = Result.ok(successValue); + + expect(result.isOk()).toBe(true); + expect(result.isErr()).toBe(false); + expect(result.inner).toBe(successValue); + }); + + it('should create an error result correctly', () => { + const errorMessage = "Error message"; + const result = Result.err(errorMessage); + + expect(result.isOk()).toBe(false); + expect(result.isErr()).toBe(true); + expect(result.inner).toBe(errorMessage); + }); + + it('should type guard success and error results correctly', () => { + const successResult = Result.ok(123); + const errorResult = Result.err("Error"); + + if (successResult.isOk()) { + expect(typeof successResult.inner).toBe('number'); + } else { + throw new Error('Expected successResult to be ok'); + } + + if (errorResult.isErr()) { + expect(typeof errorResult.inner).toBe('string'); + } else { + throw new Error('Expected errorResult to be fail'); + } + }); +}); \ No newline at end of file