diff --git a/4sem/isaip/01/PlayfairCypher/PlayfairCypher.csproj b/4sem/isaip/01/PlayfairCypher/PlayfairCypher.csproj index 39da8f3..cc084ef 100644 --- a/4sem/isaip/01/PlayfairCypher/PlayfairCypher.csproj +++ b/4sem/isaip/01/PlayfairCypher/PlayfairCypher.csproj @@ -14,4 +14,16 @@ + + + + + + + + + + + + diff --git a/4sem/isaip/01/PlayfairCypher/PlayfairCypher.sln b/4sem/isaip/01/PlayfairCypher/PlayfairCypher.sln index dff9bc5..725e348 100644 --- a/4sem/isaip/01/PlayfairCypher/PlayfairCypher.sln +++ b/4sem/isaip/01/PlayfairCypher/PlayfairCypher.sln @@ -2,6 +2,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlayfairCypher", "PlayfairCypher.csproj", "{5AAEBCD9-0ADD-4C76-B1B4-92569D82970B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlayfairTests", "PlayfairTests\PlayfairTests.csproj", "{68778671-2559-4828-9A21-13B6B67F2A9C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -12,5 +14,9 @@ Global {5AAEBCD9-0ADD-4C76-B1B4-92569D82970B}.Debug|Any CPU.Build.0 = Debug|Any CPU {5AAEBCD9-0ADD-4C76-B1B4-92569D82970B}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AAEBCD9-0ADD-4C76-B1B4-92569D82970B}.Release|Any CPU.Build.0 = Release|Any CPU + {68778671-2559-4828-9A21-13B6B67F2A9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68778671-2559-4828-9A21-13B6B67F2A9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68778671-2559-4828-9A21-13B6B67F2A9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68778671-2559-4828-9A21-13B6B67F2A9C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/4sem/isaip/01/PlayfairCypher/PlayfairTests/CryptorTest.cs b/4sem/isaip/01/PlayfairCypher/PlayfairTests/CryptorTest.cs new file mode 100644 index 0000000..5e8bb28 --- /dev/null +++ b/4sem/isaip/01/PlayfairCypher/PlayfairTests/CryptorTest.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; +using PlayfairCypher.Models; +// ReSharper disable StringLiteralTypo + +namespace PlayfairTests { + public class Tests { + PlayfairCrypto cryptor; + private List> data; // Tuple: keyword, text, encoded_text, decoded_text + + [SetUp] + public void Setup() { + cryptor = new PlayfairCrypto(); + + data = new List> { + Tuple.Create("MOTHER", "DRILL", "RAKFIZ", "DRILLX"), + Tuple.Create("ABSOLUTE", "UNION", "TMQCPW", "UNIONX"), + Tuple.Create("FLY", "SIMILAR", "PNNKYBSW", "SIMILARX"), + Tuple.Create("LARGE", "VOLUME", "ZIEPOR", "VOLUME"), + Tuple.Create("DISCIPLINE", "BEDROOM", "LASORVUF", "BEDROXOM"), + Tuple.Create("ACUTE", "APPLIED", "COQKNAFW", "APPLIEDX"), + Tuple.Create("COTTON", "HESITATE", "KBQLNCEK", "HESITATE"), + Tuple.Create("PLANET", "EJECT", "AMAFCV", "EIECTX"), + Tuple.Create("HELP", "WARM", "ZESK", "WARM"), + Tuple.Create("SNIFF", "EXPERTISE", "DYTBTUFNDY", "EXPERTISEX"), + Tuple.Create("VIGOROUS", "REMEDY", "IKWMHT", "REMEDY"), + Tuple.Create("DISH", "RAINBOW", "USHLGKXY", "RAINBOWX"), + Tuple.Create("CANDIDATE", "EMPHASIS", "FKVPDQDU", "EMPHASIS"), + Tuple.Create("ARROW", "COPPER", "EAQVQDOV", "COPXPERX"), + Tuple.Create("SHINE", "ILLNESS", "CRMISHIV", "ILLNESSX"), + Tuple.Create("COUNCIL", "PROTEST", "QSIQDTRZ", "PROTESTX"), + Tuple.Create("FUNNY", "PROGRESSIVE", "QSSBXLRZPMXC", "PROGRESXSIVE"), + Tuple.Create("DRIFT", "RELIEF", "FBQCME", "RELIEF"), + Tuple.Create("DEMOCRATIC", "SMILE", "QOBKMW", "SMILEX"), + Tuple.Create("COLORFUL", "PETTY", "TAQZSZ", "PETXTY"), + Tuple.Create("INFRASTRUCTURE", "ADVOCATE", "NKXLERUS", "ADVOCATE"), + Tuple.Create("RADICAL", "MAINSTREAM", "KDFTTUDLDK", "MAINSTREAM"), + Tuple.Create("TALENTED", "PROGRAM", "QSUOQLKY", "PROGRAMX"), + Tuple.Create("FAN", "SALAD", "RNREGV", "SALADX"), + Tuple.Create("SOUR", "SCREAM", "OBEKST", "SCREAM"), + Tuple.Create("REWARD", "BLAME", "FIGSWV", "BLAMEX"), + Tuple.Create("DIFFERENCE", "RESIDENT", "DRQFIRBP", "RESIDENT"), + Tuple.Create("EXPANSION", "BIBLE", "COSRXP", "BIBLEX"), + Tuple.Create("EXTRACT", "EXPORT", "XTQPAR", "EXPORT"), + Tuple.Create("OVERLOOK", "FANTASY", "GKPNCPZY", "FANTASYX"), + Tuple.Create("MAZE", "HOPE", "OTSM", "HOPE"), + Tuple.Create("COMMENT", "PHOTOGRAPHY", "QGCACHQBQGZY", "PHOTOGRAPHYX"), + Tuple.Create("HARD", "DISCOVER", "BGPFKZFA", "DISCOVER"), + Tuple.Create("HOROSCOPE", "EXPERIENCED", "AWEAAQGWODAZ", "EXPERIENCEDX"), + Tuple.Create("CHARTER", "DEMONSTRATION", "FBISMUCTRCOVLZ", "DEMONSTRATIONX"), + Tuple.Create("ARM", "MAN", "BRLY", "MANX"), + Tuple.Create("CREW", "RELATIONSHIP", "EWNEONTITGKO", "RELATIONSHIP"), + Tuple.Create("MIXTURE", "RHYTHM", "BDTBDT", "RHYTHM"), + Tuple.Create("CLAY", "STUDY", "TPCIGY", "STUDYX"), + Tuple.Create("STATION", "POPULATION", "UTQMHOAOSE", "POPULATION"), + Tuple.Create("MILD", "PRAY", "KUDZ", "PRAY"), + Tuple.Create("PAT", "OVERLOOK", "VPFQIRQI", "OVERLOOK"), + Tuple.Create("STALL", "SPECULATE", "TOFDRBLAKA", "SPECULATEX"), + Tuple.Create("COMPUTER", "RULE", "BMWF", "RULE"), + Tuple.Create("BARK", "RECORDING", "AFHUBFLOFY", "RECORDINGX"), + Tuple.Create("LIABILITY", "ADOPTION", "DKPQLASG", "ADOPTION"), + Tuple.Create("SHADOW", "CONDITION", "FARSMPMHQU", "CONDITIONX"), + Tuple.Create("WISECRACK", "AISLE", "GAEHSY", "AISLEX"), + Tuple.Create("CONVULSION", "KNOT", "PCCW", "KNOT"), + Tuple.Create("DECAY", "RECOMMENDATION", "QCYMNWLCKAYSOTSA", "RECOMXMENDATIONX") + }; + } + + [Test] + public void EncryptionTest() { + foreach (var tuple in data) { + Assert.AreEqual( + tuple.Item3, + cryptor.Encrypt(tuple.Item1, tuple.Item2) + ); + } + } + + [Test] + public void DecryptionTest() { + foreach (var tuple in data) { + Assert.AreEqual( + tuple.Item4, + cryptor.Decrypt(tuple.Item1, tuple.Item3) + ); + } + } + } +} \ No newline at end of file diff --git a/4sem/isaip/01/PlayfairCypher/PlayfairTests/PlayfairTests.csproj b/4sem/isaip/01/PlayfairCypher/PlayfairTests/PlayfairTests.csproj new file mode 100644 index 0000000..b6234a1 --- /dev/null +++ b/4sem/isaip/01/PlayfairCypher/PlayfairTests/PlayfairTests.csproj @@ -0,0 +1,19 @@ + + + + net5.0 + + false + + + + + + + + + + + + +