/ 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  });