From 9097ca4abc42565ed959fe591b179d38975c7222 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Tue, 7 Jul 2026 16:25:07 +0200 Subject: [PATCH] test(crypto): cover Bip39 empty input and all 8 wordlist languages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TryParse's empty/whitespace/null guard had no test, and ToWordlist's language map was only exercised for English and Spanish even though USERGUIDE §2.1 documents all 8 languages as supported on restore. Also covers the ArgumentOutOfRangeException for a language outside the enum. --- .../Crypto/Bip39Tests.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/PalladiumWallet.Tests/Crypto/Bip39Tests.cs b/tests/PalladiumWallet.Tests/Crypto/Bip39Tests.cs index 9b6d7b3..0b3c235 100644 --- a/tests/PalladiumWallet.Tests/Crypto/Bip39Tests.cs +++ b/tests/PalladiumWallet.Tests/Crypto/Bip39Tests.cs @@ -90,4 +90,40 @@ public class Bip39Tests Assert.NotEqual(Convert.ToHexString(noPass), Convert.ToHexString(withPass)); Assert.NotEqual(Convert.ToHexString(withPass), Convert.ToHexString(otherPass)); } + + [Theory] + [InlineData("")] + [InlineData(" ")] + [InlineData(null)] + public void Testo_vuoto_o_solo_spazi_viene_rifiutato(string? text) + { + Assert.False(Bip39.TryParse(text!, out var mnemonic)); + Assert.Null(mnemonic); + } + + [Theory] + [InlineData(MnemonicLanguage.English)] + [InlineData(MnemonicLanguage.Spanish)] + [InlineData(MnemonicLanguage.French)] + [InlineData(MnemonicLanguage.Japanese)] + [InlineData(MnemonicLanguage.PortugueseBrazil)] + [InlineData(MnemonicLanguage.ChineseSimplified)] + [InlineData(MnemonicLanguage.ChineseTraditional)] + [InlineData(MnemonicLanguage.Czech)] + public void Ogni_lingua_supportata_genera_e_riparsa_la_propria_mnemonica(MnemonicLanguage language) + { + var mnemonic = Bip39.Generate(MnemonicLength.Twelve, language); + + // Explicit-language parse must always succeed; it also covers the full + // language→wordlist map (USERGUIDE §2.1 promises these languages on restore). + Assert.True(Bip39.TryParse(mnemonic.ToString(), out var parsed, language)); + Assert.Equal(mnemonic.ToString(), parsed!.ToString()); + } + + [Fact] + public void Una_lingua_fuori_enum_viene_rifiutata() + { + Assert.Throws( + () => Bip39.Generate(MnemonicLength.Twelve, (MnemonicLanguage)99)); + } }