|
| 1 | +package main |
| 2 | + |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | + |
| 6 | + "github.com/stretchr/testify/assert" |
| 7 | +) |
| 8 | + |
| 9 | +func TestEcsdaWallet_GenerateWallet(t *testing.T) { |
| 10 | + wallet := ecsdaWallet{} |
| 11 | + w := wallet.GenerateWallet() |
| 12 | + assert.NotEmpty(t, w.Address) |
| 13 | + assert.NotNil(t, w.PublicKey) |
| 14 | + assert.NotNil(t, w.PrivateKey) |
| 15 | +} |
| 16 | +func TestEcsdaWallet_CountUnionChars(t *testing.T) { |
| 17 | + wallet := ecsdaWallet{} |
| 18 | + |
| 19 | + // Test case 1: Counting union characters in a string with valid letter set |
| 20 | + s1 := "abcdef123456" |
| 21 | + letterSet1 := "abc123" |
| 22 | + expectedCount1 := 6 |
| 23 | + assert.Equal(t, expectedCount1, wallet.countUnionChars(s1, letterSet1), "Expected count of 6 for valid letter set") |
| 24 | + |
| 25 | + // Test case 2: Counting union characters in a string with empty letter set |
| 26 | + s2 := "abcdef123456" |
| 27 | + letterSet2 := "" |
| 28 | + expectedCount2 := 0 |
| 29 | + assert.Equal(t, expectedCount2, wallet.countUnionChars(s2, letterSet2), "Expected count of 0 for empty letter set") |
| 30 | + |
| 31 | + // Test case 3: Counting union characters in an empty string with valid letter set |
| 32 | + s3 := "" |
| 33 | + letterSet3 := "abc123" |
| 34 | + expectedCount3 := 0 |
| 35 | + assert.Equal(t, expectedCount3, wallet.countUnionChars(s3, letterSet3), "Expected count of 0 for empty string") |
| 36 | + |
| 37 | + // Test case 4: Counting union characters in a string with invalid letter set |
| 38 | + s4 := "abcdef123456" |
| 39 | + letterSet4 := "!@#$%" |
| 40 | + expectedCount4 := 0 |
| 41 | + assert.Equal(t, expectedCount4, wallet.countUnionChars(s4, letterSet4), "Expected count of 0 for invalid letter set") |
| 42 | +} |
| 43 | +func TestEcsdaWallet_Bech16Only(t *testing.T) { |
| 44 | + wallet := ecsdaWallet{} |
| 45 | + |
| 46 | + // Test case 1: All characters are valid bech16 characters |
| 47 | + s1 := "abcdef123456" |
| 48 | + assert.True(t, wallet.bech16Only(s1), "Expected true for valid bech16 characters") |
| 49 | + |
| 50 | + // Test case 2: Some characters are not valid bech16 characters |
| 51 | + s2 := "abcde!@#$%" |
| 52 | + assert.False(t, wallet.bech16Only(s2), "Expected false for invalid bech16 characters") |
| 53 | + |
| 54 | + // Test case 3: Empty string |
| 55 | + s3 := "" |
| 56 | + assert.True(t, wallet.bech16Only(s3), "Expected true for empty string") |
| 57 | + |
| 58 | + // Test case 4: String with valid bech16 characters and additional characters |
| 59 | + s4 := "abcdef123456!" |
| 60 | + assert.False(t, wallet.bech16Only(s4), "Expected false for string with additional characters") |
| 61 | +} |
| 62 | +func TestEcsdaWallet_CheckRequiredDigits(t *testing.T) { |
| 63 | + wallet := ecsdaWallet{} |
| 64 | + |
| 65 | + // Test case 1: Candidate string has less required digits |
| 66 | + candidate1 := "abcdef123456" |
| 67 | + required1 := 7 |
| 68 | + assert.False(t, wallet.CheckRequiredDigits(candidate1, required1), "Expected false for candidate string with less required digits") |
| 69 | + |
| 70 | + // Test case 2: Candidate string has exact required digits |
| 71 | + candidate2 := "abcdef123456" |
| 72 | + required2 := 6 |
| 73 | + assert.True(t, wallet.CheckRequiredDigits(candidate2, required2), "Expected true for candidate string with exact required digits") |
| 74 | + |
| 75 | + // Test case 3: Candidate string has more than required digits |
| 76 | + candidate3 := "abcdef123456" |
| 77 | + required3 := 5 |
| 78 | + assert.True(t, wallet.CheckRequiredDigits(candidate3, required3), "Expected true for candidate string with more than required digits") |
| 79 | + |
| 80 | + // Test case 4: Empty candidate string |
| 81 | + candidate4 := "" |
| 82 | + required4 := 3 |
| 83 | + assert.False(t, wallet.CheckRequiredDigits(candidate4, required4), "Expected false for empty candidate string") |
| 84 | +} |
| 85 | +func TestEcsdaWallet_CheckRequiredLetters(t *testing.T) { |
| 86 | + wallet := ecsdaWallet{} |
| 87 | + |
| 88 | + // Test case 1: Candidate string has enough required letters |
| 89 | + candidate1 := "abcdef123" |
| 90 | + required1 := 5 |
| 91 | + assert.True(t, wallet.CheckRequiredLetters(candidate1, required1), "Expected true for candidate string with enough required letters") |
| 92 | + |
| 93 | + // Test case 2: Candidate string does not have enough required letters |
| 94 | + candidate2 := "abc123" |
| 95 | + required2 := 10 |
| 96 | + assert.False(t, wallet.CheckRequiredLetters(candidate2, required2), "Expected false for candidate string without enough required letters") |
| 97 | + |
| 98 | + // Test case 3: Candidate string is empty |
| 99 | + candidate3 := "" |
| 100 | + required3 := 5 |
| 101 | + assert.False(t, wallet.CheckRequiredLetters(candidate3, required3), "Expected false for empty candidate string") |
| 102 | + |
| 103 | + // Test case 4: Required letters is 0 |
| 104 | + candidate4 := "abc123" |
| 105 | + required4 := 0 |
| 106 | + assert.True(t, wallet.CheckRequiredLetters(candidate4, required4), "Expected true for required letters equal to 0") |
| 107 | +} |
| 108 | + |
| 109 | +func TestEcsdaWallet_ValidateInput(t *testing.T) { |
| 110 | + wallet := ecsdaWallet{} |
| 111 | + |
| 112 | + // Test case 1: Valid input |
| 113 | + searchString1 := "abcdef123456" |
| 114 | + requiredLetters1 := 6 |
| 115 | + requiredDigits1 := 6 |
| 116 | + expectedErrs1 := []string(nil) |
| 117 | + assert.Equal(t, expectedErrs1, wallet.ValidateInput(searchString1, requiredLetters1, requiredDigits1), "Expected no errors for valid input") |
| 118 | + |
| 119 | + // Test case 2: Invalid bech16 characters |
| 120 | + searchString2 := "abcde!@#$%" |
| 121 | + requiredLetters2 := 6 |
| 122 | + requiredDigits2 := 6 |
| 123 | + expectedErrs2 := []string{"ERROR: abcde!@#$% contains bech16 incompatible characters"} |
| 124 | + assert.Equal(t, expectedErrs2, wallet.ValidateInput(searchString2, requiredLetters2, requiredDigits2), "Expected error for invalid bech16 characters") |
| 125 | + |
| 126 | + // Test case 3: String too long |
| 127 | + searchString3 := "abcdef123456abcdef123456abcdef123456abcdef1234567" |
| 128 | + requiredLetters3 := 6 |
| 129 | + requiredDigits3 := 6 |
| 130 | + expectedErrs3 := []string{"ERROR: abcdef123456abcdef123456abcdef123456abcdef1234567 is too long. Must be max 40 characters."} |
| 131 | + assert.Equal(t, expectedErrs3, wallet.ValidateInput(searchString3, requiredLetters3, requiredDigits3), "Expected error for string too long") |
| 132 | + |
| 133 | + // Test case 4: Negative required characters |
| 134 | + searchString4 := "abcdef123456" |
| 135 | + requiredLetters4 := -1 |
| 136 | + requiredDigits4 := 6 |
| 137 | + expectedErrs4 := []string{"ERROR: Can't require negative amount of characters."} |
| 138 | + assert.Equal(t, expectedErrs4, wallet.ValidateInput(searchString4, requiredLetters4, requiredDigits4), "Expected error for negative required characters") |
| 139 | + |
| 140 | + // Test case 5: Required characters exceed string length |
| 141 | + searchString5 := "abcdef123456abcdef123456abcdef123456abcdef123456abcdef123456abcdef123456" |
| 142 | + requiredLetters5 := 10 |
| 143 | + requiredDigits5 := 10 |
| 144 | + expectedErrs5 := []string{"ERROR: abcdef123456abcdef123456abcdef123456abcdef123456abcdef123456abcdef123456 is too long. Must be max 40 characters."} |
| 145 | + assert.Equal(t, expectedErrs5, wallet.ValidateInput(searchString5, requiredLetters5, requiredDigits5), "Expected error for required characters exceeding string length") |
| 146 | +} |
0 commit comments