/ utils_test.ts
utils_test.ts
1 import { assertEquals } from "@std/assert"; 2 import { 3 convertToDecimal, 4 type ICopyFilesArguments, 5 isSafeMultiSigTx, 6 type TxAll, 7 } from "./utils.ts"; 8 9 Deno.test("convertToDecimal - basic conversion", () => { 10 assertEquals(convertToDecimal("123456", 2), "1234.56"); 11 assertEquals(convertToDecimal("100", 2), "1"); 12 assertEquals(convertToDecimal("1000000", 6), "1"); 13 assertEquals(convertToDecimal("1234567890", 8), "12.3456789"); 14 }); 15 16 Deno.test("convertToDecimal - removes trailing zeros", () => { 17 assertEquals(convertToDecimal("30000000", 5), "300"); 18 assertEquals(convertToDecimal("12340000", 4), "1234"); 19 assertEquals(convertToDecimal("100500", 3), "100.5"); 20 assertEquals(convertToDecimal("100050", 3), "100.05"); 21 assertEquals(convertToDecimal("100000", 3), "100"); 22 }); 23 24 Deno.test("convertToDecimal - edge cases", () => { 25 // All zeros 26 assertEquals(convertToDecimal("000000", 3), "0"); 27 28 // Single digit 29 assertEquals(convertToDecimal("5", 1), "0.5"); 30 assertEquals(convertToDecimal("0", 1), "0"); 31 32 // No decimals 33 assertEquals(convertToDecimal("123", 0), "123"); 34 35 // More decimals than digits 36 assertEquals(convertToDecimal("1", 3), "0.001"); 37 assertEquals(convertToDecimal("12", 5), "0.00012"); 38 }); 39 40 Deno.test("convertToDecimal - preserves significant decimal digits", () => { 41 assertEquals(convertToDecimal("123450", 4), "12.345"); 42 assertEquals(convertToDecimal("100100", 4), "10.01"); 43 assertEquals(convertToDecimal("100010", 4), "10.001"); 44 assertEquals(convertToDecimal("100001", 4), "10.0001"); 45 }); 46 47 Deno.test("convertToDecimal - handles large numbers", () => { 48 assertEquals(convertToDecimal("1000000000000000000", 18), "1"); 49 assertEquals(convertToDecimal("1500000000000000000", 18), "1.5"); 50 assertEquals( 51 convertToDecimal("123456789012345678", 18), 52 "0.123456789012345678", 53 ); 54 }); 55 56 Deno.test("isSafeMultiSigTx - identifies multisig transactions", () => { 57 const multisigTx = { 58 txType: "MULTISIG_TRANSACTION" as const, 59 } as TxAll; 60 61 assertEquals(isSafeMultiSigTx(multisigTx), true); 62 }); 63 64 Deno.test("isSafeMultiSigTx - identifies module transactions", () => { 65 const moduleTx = { 66 txType: "MODULE_TRANSACTION" as const, 67 } as TxAll; 68 69 assertEquals(isSafeMultiSigTx(moduleTx), false); 70 }); 71 72 Deno.test("isSafeMultiSigTx - identifies ethereum transactions", () => { 73 const ethTx = { 74 txType: "ETHEREUM_TRANSACTION" as const, 75 } as TxAll; 76 77 assertEquals(isSafeMultiSigTx(ethTx), false); 78 }); 79 80 Deno.test("Type definitions - ICopyFilesArguments with settings undefined", () => { 81 const args: ICopyFilesArguments = { 82 address: "0xabcdef1234567890abcdef1234567890abcdef12", 83 settings: undefined, 84 noOpen: false, 85 }; 86 assertEquals(args.address, "0xabcdef1234567890abcdef1234567890abcdef12"); 87 assertEquals(args.settings, undefined); 88 assertEquals(args.noOpen, false); 89 });