From 700707ab189ba6dafa4cd2b44a24909cf27c2146 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Thu, 22 Feb 2024 23:53:03 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Adds=20test=20for=20the=20result?= =?UTF-8?q?=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/test/result.test.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/test/result.test.ts 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